Mysql SQL从一个表中选择在另一个表中出现
我有两张桌子:Mysql SQL从一个表中选择在另一个表中出现,mysql,sql,Mysql,Sql,我有两张桌子: Event +----------+---------+--------------+ | event_id | name | date | +----------+------+-----------------+ | 1 | Event 1 | 26/03/2012 | +----------+------+-----------------+ | 2 | Event 2 | 27/03/2012 | +-------
Event
+----------+---------+--------------+
| event_id | name | date |
+----------+------+-----------------+
| 1 | Event 1 | 26/03/2012 |
+----------+------+-----------------+
| 2 | Event 2 | 27/03/2012 |
+----------+------+-----------------+
Reservation
+----------------+------------+--------------+
| reservation_id | date | themed_id |
+----------------+------------+--------------+
| 1 | 26/03/2012 | 1 |
+----------------+------------+--------------+
| 2 | 26/03/2012 | 1 |
+----------------+------------+--------------+
| 3 | 27/03/2012 | 2 |
+----------------+------------+--------------+
| 4 | 26/03/2012 | 1 |
+----------------+------------+--------------+
如何显示预订表中出现少于3次的所有事件
输出将是:
+----------+---------+--------------+
| event_id | name | date |
+----------+------+-----------------+
| 2 | Event 2 | 27/03/2012 |
+----------+------+-----------------+
因为事件二只在预定中出现过一次
谢谢我猜是Event.Event\u id=Reservation.themed\u id?如果是:
编辑:更改为左联接,以包含保留为0的事件
SELECT
Event.event_id,
Event.name,
Event.date
FROM
Event
LEFT JOIN Reservation ON Event.event_id = Reservation.themed_id
GROUP BY
Event.event_id
HAVING
COUNT(DISTINCT Reservation.reservation_id) < 3
我还没有测试过,但基本想法是这样。你自己先试过吗?我们是来帮助你的,不是给你一个完整的书面解决方案。
SELECT *
FROM Event
WHERE event_id IN (
SELECT themed_id
FROM Reservation
GROUP BY themed_id
HAVING COUNT(*) < 3)