Я, похоже, не могу обдумать вопрос о правильном запросе этого вопроса. У меня есть три таблицы и вы хотите объединить их, чтобы показать, сколько билетов осталось в каждом месте. Я запускаю SQL Server 2008 R2.Запрос, который объединяет три таблицы, чтобы показать общее количество
Местоположение Таблица
LocationId | LocationName
1 | Location1
2 | Location2
3 | Location3
Билеты в местоположение Таблица
TicketId | LocationId | EventId | Amount
1 | 1 | 4 | 25
1 | 2 | 4 | 50
1 | 3 | 4 | 100
Приобретенные билеты Таблица
AttendeeId | EventId | TicketId | LocationId | Amount | EmployeeId
1 | 4 | 1 | 1 | 5 | 101
2 | 4 | 1 | 1 | 10 | 102
3 | 4 | 1 | 2 | 2 | 103
4 | 4 | 1 | 2 | 4 | 103
Я хочу, чтобы запрос, чтобы отобразить три таблицы, как это:
LocationName | Starting | Sold | Remaining
Location1 | 25 | 15 | 10
Location2 | 50 | 6 | 44
Location3 | 100 | 0 | 0
Это вопрос, с которым я играл, но он показывает мне только те места, где были проданы билеты, мне нужно, чтобы они показывали мне все места, даже если у них нет билетов.
SELECT L.LocationName, T.Amount as Starting, COALESCE(SUM(P.Amount),0) as Sold, COALESCE((T.Amount - SUM(P.Amount)),0) as Remaining
FROM TicketsPerLocation T
LEFT JOIN Locations L
ON T.LocationId = L.LocationId
LEFT JOIN PurchasedTickets P
ON T.LocationId = P.LocationId
WHERE T.TicketId = 1 AND T.EventId = 4 AND P.TicketId = 1
GROUP BY L.Name, T.Amount, T.TicketId