2009-10-23 34 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; 
相关问题