我不知道该为什么标题...请继续阅读...
我有一个事件表,每个事件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
我希望某些车辆可用于某些活动,例如,carIDs 1,2和3可能适用于eventID 1,但只有carID 4可用于活动2。
我不确定如何将这些表连接在一起。
我正在查看另一张表,该表定义哪些车可用于哪个事件,例如
eventID carID
1 1
1 2
1 3
2 4
但我无法弄清楚如何将这3个表连接在一起以获取event1的汽车列表。
任何指针都感激不尽!
答案 0 :(得分: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
答案 1 :(得分:1)
Junction tables是在RDBMS中建模多对多关系的经典解决方案。
您不需要连接三个表来获取event1的汽车 - 两个表就足够了:
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'