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,2 和 3 可能可用于事件 ID 1,但只有汽车 ID 4 可用于事件 2。

我不确定如何将这些表连接在一起。

我正在查看另一个表格,该表格定义了哪些汽车可用于哪个事件,例如

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 获取汽车 - 两个表就足够了:

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 回答