2009-10-23 3 views
0

У меня есть таблица «События» для пользователей, чтобы добавить события со следующими полями:
EventID
EventName
EventSlot (-> slotID)
EventSlotExtra (-> slotID) (опционально)
EventLimit

И у меня есть еще одна таблица "слотов"
SlotID (интермедиат)
SlotTime (это 9 утра-10 утра, 10 am-11am и т.д.)

Мне нужно запросить обе таблицы, чтобы я мог получить в общей сложности людей, посещающих события за SlotTime. Я знаю, как это сделать, когда выбран только EventSlot, но не тогда, когда также выбран EventSlotExtra. Вы можете помочь?
Большое спасибоПолучить SUM из двух столбцов связаны с той же самой колонке в другой таблице

+1

Возможно, вы можете показать нам код, который вы написали до сих пор? Люди обычно не любят просто писать код для вас ... –

+0

Предположительно, у вас также есть таблица посетителей, которая каким-то образом ссылается на события. Или это «общее количество людей», полученное каким-то другим способом? – APC

+0

Да, я знаю. Но это необязательно для этой операции, поскольку EventLimit дает мне количество посетителей, которые гипотетически будут посещать каждое событие. – Anelim

ответ

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;