用第三个表连接两个表

时间:2012-05-08 15:39:51

标签: mysql

我不知道该为什么标题...请继续阅读...

我有一个事件表,每个事件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的汽车列表。

任何指针都感激不尽!

2 个答案:

答案 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'