2017-07-31 3 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 

:つまり、それは車が1時間または別で発見されたすべての店舗ですストアからのトランザクションが必要です。たとえば、店舗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 

質問は、私はちょうど最後WHERE store.ID=3で追加だけでなく、store.storeInfo列を得ることができるように、私は次のJOINを行うのですかです。私はちょうどゴム(https://en.wikipedia.org/wiki/Rubber_duck_debugging)自分自身をすくめ...参加行方不明と

+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 
関連する問題