如何在SQL中通过N:N关系表进行连接

3

我需要帮助通过一个N:N关系表进行连接。

在我的第一个表中,我有汽车租赁交易记录:

Transaction
-----------------------
id : carID : date
1  : 2     : 01-01-2017
2  : 2     : 01-01-2017
3  : 3     : 01-01-2017
4  : 4     : 01-01-2017

我的汽车桌子上有:
Car
---------------
id : carInfo
2  : brown car
3  : red car
4  : green car
5  : orange car

我还有一个存储表:

Store
---------------
id : storeInfo
3  : city3
4  : city4
5  : city5

我的关系表是汽车和商店的组合,因为汽车可以从一个商店移动到另一个商店。换句话说,这是汽车曾经在其中发现过的所有商店:
Relationship Table
------------------
carID : storeID
2     : 3
2     : 4
3     : 3

我想要查询的内容是获取记录交易列表,包括汽车和商店信息,假设我只想要来自商店的交易。例如,我想要从商店3获取所有交易。我特别想要这个结果表格 (SELECT transaction.*, car.carInfo, store.storeInfo WHERE store.ID=3),当然需要适当的连接。
Joined Transaction result table
---------------------------------------
id : date : carID : carInfo : storeID : storeInfo 

where storeID=3

我知道我可以在交易表和汽车表中进行LEFT JOIN,但是如何通过关系表也连接商店表。换句话说,我目前拥有的是(我认为是错误的):
SELECT transaction.*, car.carInfo LEFT JOIN car ON transaction.carID=car.ID

问题是如何进行下一个 JOIN,以便我可以在结尾添加 WHERE store.ID=3 并获取 store.storeInfo 列。我在缺少联接方面遇到了困难...

我刚刚自己给自己解决了问题,就像使用橡皮鸭调试一样 :( - Stephane Grenier
1个回答

1
SELECT 
    transaction.*,
    car.carInfo,
    store.storeInfo
FROM 
    transaction
INNER JOIN
    relationshipTable ON transaction.carID=relationshipTable.carID
LEFT JOIN
    store ON relationshipTable.storeID=store.ID
WHERE   
    store.id=3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接