我环顾四周,但在网络上找不到任何指向正确方向的东西,因此,我将尝试知识渊博的stackoverflow人员:)
我在Microsoft Access 2007中有4个表(Warehouse
,Cars
,TVs
和Toys
)。
__(many) Cars
/
Warehouse 1---(many) TVs
\__(many) Toys
Warehouse表在WarehouseNumber字段上具有对汽车,电视,玩具的一对多分配,我一直在尝试进行查询,该查询会给我
Dollar Value
的总和(即汽车,电视和玩具表中的字段)。我正在用Joins来做,但是也许是错误的方法。我只了解有关联接的基础知识,但是以前从未使用过它们。首先,我试图基于
Warehouse.WarehouseNumber
字段值获取差异记录,如下所示:SELECT Warehouse.[WarehouseNumber], Cars.[DollarValue], TVs.[DollarValue]
FROM (Warehouse INNER JOIN Cars
ON Warehouse.[WarehouseNumber] = Cars.[WareHouseNumber])
INNER JOIN TVs ON TVs.[WarehouseNumber] = TVs.[WarehouseNumber];
但是我得到了这样的重复记录(这只是伪数据):
WarehouseNumber | Cars.DollarValue | TVs.DollarValue
1111-1111 | $8,000.00 | $500.00
1111-1111 | $8,000.00 | $800.00
1111-1111 | | $500.00
1111-1111 | | $800.00
1111-3333 | $1,000,000.00 |
1111-3333 | $21,000.00 |
有一个更好的方法吗?
我在这里先向您的帮助表示感谢
更新:我为Remou提供了答案,以简化查询,并且是第一个查询,但是到目前为止,所有示例都没有给我提供任何重复记录。感谢您的快速帮助,您正在使我更容易接受。
最佳答案
我建议您对玩具,汽车和电视使用联合查询。如果您需要的只是价值,那么您可能不需要仓库。
SELECT DollarValue FROM Cars
UNION ALL
SELECT DollarValue FROM TVs
UNION ALL
SELECT DollarValue FROM Toys
如果您需要总计,可以这样获得:
SELECT Sum(DollarValue) FROM (
SELECT DollarValue FROM Cars
UNION ALL
SELECT DollarValue FROM TVs
UNION ALL
SELECT DollarValue FROM Toys ) A
您还可以:
SELECT Product, Sum(DollarValue) FROM (
SELECT "Cars" As Product, DollarValue FROM Cars
UNION ALL
SELECT "TVs" As Product, DollarValue FROM TVs
UNION ALL
SELECT "Toys" As Product, DollarValue FROM Toys ) A
GROUP BY Product
关于sql - 如何以一个表为基础在Microsoft Access中加入4个表?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1947474/