MySQL - Попытка подсчитать проданные билеты на событие - PullRequest
0 голосов
/ 25 апреля 2011

У меня есть база данных с двумя таблицами, events и tickets. Таблица events содержит строки событий, а tickets каждый проданный билет.

Например,

events
------
id name  capacity
1  Test  10
2  Test2 20
3  Test3 15

tickets
-------
id event_id customer_id
1  1        (value here doesn't matter)
2  1
3  3
4  1
5  3

Итак, я вижу, что 3 билета на мероприятие № 1 были проданы, 0 билетов на мероприятие № 2 и 2 билета на мероприятие № 3 были проданы.

Я пытаюсь создать запрос, который выбирает все события, плюс столбец available, который является емкостью событий меньше количества проданных билетов.

У меня есть этот запрос:

SELECT
events.id,
events.name,
events.capacity,
events.capacity - COUNT(tickets.id) AS available
FROM
events
INNER JOIN tickets ON events.id = tickets.event_id

Однако это не возвращает никаких событий, когда билеты еще не были проданы. Я думал, что это может быть типом соединения, но я пробовал различные безуспешно.

Я не уверен, куда я иду не так.

Ответы [ 2 ]

2 голосов
/ 25 апреля 2011

Вы почти у цели, просто измените inner join на left join:

SELECT  events.id,
,       events.name
,       events.capacity
,       events.capacity - COUNT(tickets.id) AS available
FROM    events
LEFT JOIN 
        tickets 
ON      events.id = tickets.event_id
group by
        events.id,
,       events.name
,       events.capacity

Даже если MySQL не требует этого, рекомендуется явно перечислять все неагрегированные столбцы вgroup by предложение.

0 голосов
/ 25 апреля 2011

Это должно быть соединение.Попробуйте левое соединение вместо внутреннего соединения

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