MySQL - Где / Имеющий Счет> columnName - PullRequest
0 голосов
/ 14 сентября 2011

У меня есть список дат, называемых списками, в которых люди могут зарегистрироваться, чтобы принять участие, под названием бронирование.

listings
id |    date    | capacity
1    2010-01-01   3
2    2010-01-02   1
3    2010-02-02   2

bookings
id | listing_id | name
1    1            Chris
2    1            Steve
3    1            Allen
4    2            Tracy

То, что я хочу сделать, - это запрос, который возвращает только открытые списки на основе бронирований.

Запрос выдаст список только с идентификатором = 3. Поскольку у него нет заказов и он равен 2.

Sample query which won't work:
SELECT
    *
FROM
    listings
HAVING COUNT(
             SELECT * FROM bookings WHERE listings.id=bookings.listing_id
            ) < capacity

Любая помощь приветствуется.

Ответы [ 3 ]

2 голосов
/ 14 сентября 2011
SELECT *
FROM listings
WHERE capacity > (SELECT count(*) 
                  FROM bookings 
                  WHERE listings.id=bookings.listing_id)
1 голос
/ 14 сентября 2011
SELECT
    listings.id,
    max(listings.date),
    max(listings.capacity)
FROM listings
left join bookings on listings.id = bookings.listing_id
group by listings.id
having COUNT(bookings.listing_id) < max(listings.capacity)
0 голосов
/ 14 сентября 2011

* Сам, я бы сделал объединение и затем посчитал бы:

SELECT COUNT(*) as count 
FROM listings, bookings 
WHERE listings.id=bookings.listing_id 
AND count < listings.capacity 
GROUP by listings.id

Я не проверял это, но это общая идея!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...