2009-10-23 124 views
0

我有用戶表「事件」來添加事件具有以下字段:
事件ID
事件名稱
EventSlot( - > slotID用於)
EventSlotExtra ( - > slotID用於)(可選)
EventLimit

我有另一個表 「插槽」
slotID用於(INT)
SlotTime(這是9 am-10am,10 am-11am等)

我需要查詢兩個表,這樣我才能獲得每個參加SlotTime的人員總數。當只選擇EventSlot時,我知道如何做到這一點,但當EventSlotExtra也被選中時,我不知道如何做到這一點。你能幫我嗎?
非常感謝得到兩列的SUM鏈接到不同的表同一列

+1

也許你可以告訴我們你寫的代碼到目前爲止?人們通常不喜歡只爲你寫代碼...... – 2009-10-23 15:11:36

+0

想必你也有一個參加者的表格,它以某種方式鏈接到事件。還是以其他方式衍生的「人員總數」? – APC 2009-10-23 15:16:10

+0

是的,我喜歡。但是這個操作沒有必要,因爲EventLimit給了我假設參加每個活動的參加者人數。 – Anelim 2009-10-23 15:20:12

回答

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

這是偉大的,謝謝!

我剛剛修改了代碼,因爲我正在尋找參加者的總數,而不是每個插槽的事件數量,否則Charles Bretagna的代碼幫了我很多!再次感謝!

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;