我正在构建一个包含车辆组件的数据库。有三个表:
我想创建一个Access SQL查询,它可以获取安装在特定车辆上的所有过滤器和轮胎的序列号和部件号(假设我们正在搜索本田思域,其车辆ID为5)。我创建了以下代码,但它返回了所有结果的笛卡尔积。每辆车上安装了两个过滤器和两个轮胎,因此它返回以下结果,其中结果被组合并重复。
无论如何,我可以创建一个返回的查询:
我的代码如下:
SELECT DISTINCT Tires.SN, Tires.PN, Tires.ID, Filters.ID, Filters.PN, Filters.SN,
Vehicle.ID
FROM (Vehicle
INNER JOIN Filters ON Vehicle.[ID] = Filters.[ID])
INNER JOIN Tires ON Vehicle.[ID] = Tires.[ID]
WHERE Vehicle.[ID] = 5;
答案 0 :(得分:0)
如果您真的只需要一个Vehicle.ID值,那么您可以使用UNION
这样的查询:
SELECT 'Tire',Tires.SN, Tires.PN
FROM Tires
WHERE Vehicle.[ID]=5
UNION
SELECT 'Filter',Filters.PN, Filters.SN
FROM Filters
WHERE Vehicle.[ID]=5
ORDER BY 1;