Access Union同桌不会更新

时间:2015-10-13 10:03:22

标签: sql ms-access-2010

我有一张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'

我想更新访问中的价格,但不会让我,任何帮助?

1 个答案:

答案 0 :(得分:0)

UNION子查询的列具有相同的名称非常重要(例如price而不是price1price2,..)。

要获得所需的表格(并过滤它),您可以使用:

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 :无论如何要编辑数据,有一些解决方法: