2015-10-13 82 views
0

我有2 PK companyid和articlecode然後 價格1,price2,price3,price4 這樣訪問聯盟同桌不會更新

文章表的表:

companyid | articlecode | price1 | price2 | price3 | price4 
1 | 10001 | 1 | 2 | 3 | 4 
2 | 10001 | 2 | 3 | 4 | 5 
... 

的話,我想有:

companyid articlecode PriceName Price 
1 | 10001 | Price1 | 1 
1 | 10001 | Price2 | 2 
1 | 10001 | Price3 | 3 
1 | 10001 | Price4 | 4 

我有這樣的工會:

SELECT Articles.companyid, Articles.articlecode,"Price 1", Articles.price1 
FROM Articles 
Where 
Articles.articlecode = '10001' And Articles.companyid = '1' 
Union 
SELECT Articles.companyid, Articles.articlecode, "Price 2", Articles.price2 
FROM Articles 
Where 
Articles.articlecode = '10001' And Articles.companyid = '1' 
Union 
SELECT Articles.companyid, Articles.articlecode, "Price 3", Articles.price3 
FROM Articles 
Where 
Articles.articlecode = '10001' And Articles.companyid = '1' 
Union 
SELECT Articles.companyid, Articles.articlecode, "Price 4", Articles.price4 
FROM Articles 
Where 
Articles.articlecode = '10001' And Articles.companyid = '1' 

我想更新訪問中的價格,但不會讓我幫忙嗎?

回答

0

重要的是您的UNION子查詢的列具有相同的名稱(例如price而不是price1,price2,..)。

爲了得到你想要的表(和篩選它),你可以使用:

SELECT companyid, articlecode, PriceName, Price 
FROM (
    SELECT Articles.companyid, Articles.articlecode,"Price 1" as PriceName, Articles.price1 as Price 
    FROM Articles 
    UNION 
    SELECT Articles.companyid, Articles.articlecode,"Price 2" as PriceName, Articles.price2 as Price 
    FROM Articles 
    UNION 
    SELECT Articles.companyid, Articles.articlecode,"Price 3" as PriceName, Articles.price3 as Price 
    FROM Articles 
    UNION 
    SELECT Articles.companyid, Articles.articlecode,"Price 4" as PriceName, Articles.price4 as Price 
    FROM Articles 
) t 
WHERE articlecode='10001' AND companyid='1'; 

做一個更新,你必須使用原始表:

UPDATE Articles SET price1=1.2, price2=2.2 WHERE articlecode='10001' AND companyid='1'; 


編輯:雖然可以在一些查詢編輯數據,you cannot edit data in all query

在以下情況下,您永遠無法編輯查詢中的數據:

  • 查詢是一個交叉表查詢。
  • 該查詢是一個SQL特定的查詢。
  • 您嘗試編輯的字段是計算字段。在這種情況下,您可能可以編輯其他字段。
  • 該查詢基於三個或更多表格,並且存在多對一的關係。注意儘管在這種情況下無法編輯查詢數據表,但可以在表格的 RecordsetType屬性設置爲動態集(不一致 更新)時編輯表單中的數據。
  • 該查詢包含一個GROUP BY子句。

在這種情況下,我們使用的是SQL特定的查詢。


編輯2:編輯您的資料反正有一些解決方法:

+0

所以沒有辦法,我不能做到這一點? – mikes

+1

您可以將數據寫入臨時表,編輯它並將數據讀回原始字段。或者更好:更新你的表模式來尊重標準化。 – Gustav