如何通过SQL

时间:2017-07-31 04:07:00

标签: sql join left-join inner-join

我需要一些帮助来通过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

我知道我可以在事务表和car表中执行LEFT JOIN,但是如何通过关系表加入store表。换句话说,我现在(我认为是错的):

SELECT transaction.*, car.carInfo LEFT JOIN car ON transaction.carID=car.ID

问题是如何执行下一个JOIN,以便我可以在最后添加WHERE store.ID=3以及获取store.storeInfo列。我正在为失踪的加入而苦苦挣扎......

1 个答案:

答案 0 :(得分: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