2017-07-31 133 views
1

我需要一些帮助来通过N:N关系表进行连接。如何通过SQL中的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列。我与失踪加入挣扎......

+0

我只是橡胶躲开(https://en.wikipedia.org/wiki/Rubber_duck_debugging)我:( –

回答

0
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