1

このタイトルに何を入れたらいいのかわかりませんでした...読んでください...

イベントごとに3日間のイベントのテーブルがあります

eventID dayID
1       1
1       2
1       3
2       1
2       2
2       3

イベント車両も多数ご用意しております

carID regNum
1     fg12 bfr
2     gh34 vbn
3     kl56 thg
4     lm32 tfx

特定のイベントで特定の車を利用できるようにしたいと考えています。たとえば、イベント ID 1 では carID 1、2、および 3 を利用できますが、イベント 2 では carID 4 しか利用できません。

これらのテーブルを結合する方法がわかりません。

たとえば、どの車がどのイベントで利用できるかを定義する別のテーブルを見ています

eventID carID
1       1
1       2
1       3
2       4

しかし、これら 3 つのテーブルを結合して、たとえば event1 の車のリストを取得する方法がわかりません。

感謝して受け取ったポインタ!

4

2 に答える 2

1
SELECT e.id, c.carID, c.regNum
FROM tblEvents e
JOIN tblEventCars ec ON ec.eventID = e.eventID
JOIN tblCars c ON c.carID = ec.carID
GROUP BY e.id, c.carID
于 2012-05-08T15:43:33.520 に答える
1

ジャンクション テーブルは、RDBMS で多対多の関係をモデル化するための従来のソリューションです。

event1 の車を取得するために 3 つのテーブルを結合する必要はありません。2 つのテーブルで十分です。

select *
from Cars c
join CarEvent e on e.CarId = c.CarId
where e.EventId = 1

イベント名が必要な場合は、イベント テーブルにも参加する必要があります。

select *
from Cars c
join CarEvent ce on ce.CarId = c.CarId
join Event e on e.EventId = ce.EventId
where e.EventName = 'Event1'
于 2012-05-08T15:45:08.877 に答える