我环顾四周,但在网络上找不到任何指向正确方向的东西,因此,我将尝试知识渊博的stackoverflow人员:)

我在Microsoft Access 2007中有4个表(WarehouseCarsTVsToys)。

            __(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/

10-11 01:43