SQL выбирает все записи из одной таблицы, которые появляются <3 раза в другой - PullRequest
0 голосов
/ 24 марта 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   |
+----------+------+-----------------+

Как событие два появилось только один раз в бронировании

спасибо

Ответы [ 2 ]

1 голос
/ 24 марта 2012
SELECT *
FROM Event
WHERE event_id IN (
SELECT themed_id
FROM Reservation
GROUP BY themed_id
HAVING COUNT(*) < 3)

Я не проверял, но основная идея заключается в следующем.

1 голос
/ 24 марта 2012

Я догадываюсь Event.event_id = Reservation.themed_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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...