У меня есть таблица «События» для пользователей, чтобы добавить события со следующими полями:
EventID
EventName
EventSlot (-> slotID)
EventSlotExtra (-> slotID) (опционально)
EventLimit
И у меня есть еще одна таблица "слотов"
SlotID (интермедиат)
SlotTime (это 9 утра-10 утра, 10 am-11am и т.д.)
Мне нужно запросить обе таблицы, чтобы я мог получить в общей сложности людей, посещающих события за SlotTime. Я знаю, как это сделать, когда выбран только EventSlot, но не тогда, когда также выбран EventSlotExtra. Вы можете помочь?
Большое спасибоПолучить SUM из двух столбцов связаны с той же самой колонке в другой таблице
0
A
ответ
0
попробовать этот
Select s.SlotTime,
Count(e.EventId) + Count(x.EventId) EventCount
From Slots s
Left Join Events e
On e.EventSlot = s.SlotId
Left Join Events x
On x.EventSlotExtra = x.SlotId
Group By s.SlotTime
1
Это здорово, спасибо !!!
Я только что изменил код, поскольку искал сумму участников, а не количество событий на каждый слот, но в остальном код от Чарльза Бретаньи мне очень помог! Еще раз спасибо!
SELECT
s.SlotTime, s.SlotID, ISNULL(SUM(x.EventLimit), 0) + ISNULL(SUM(e.EventLimit), 0)
AS PeopleLimit
FROM
Slots AS s
LEFT OUTER JOIN Events AS e ON e.EventSlot = s.SlotID
LEFT OUTER JOIN Events AS x ON x.EventSlot1 = s.SlotID
GROUP BY s.SlotTime, s.SlotID
ORDER BY s.SlotID;
Возможно, вы можете показать нам код, который вы написали до сих пор? Люди обычно не любят просто писать код для вас ... –
Предположительно, у вас также есть таблица посетителей, которая каким-то образом ссылается на события. Или это «общее количество людей», полученное каким-то другим способом? – APC
Да, я знаю. Но это необязательно для этой операции, поскольку EventLimit дает мне количество посетителей, которые гипотетически будут посещать каждое событие. – Anelim