2009-10-23 2 views
0

나는 다음과 같은 필드 이벤트를 추가하는 사용자를위한 테이블 "이벤트"가 있습니다
이벤트 ID
EventName을
EventSlot (-> slotID)
EventSlotExtra을 (-> slotID) (옵션)
EventLimit

그리고 다른 테이블 "슬롯"이
SlotID (int)를
SlotTime
(이 오전 9시에서 오전 10시까지, 오전 10시부터 오전 11시까지 등이다)
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

, 감사하십시오!

참석자 수와 슬롯 당 이벤트 수를 찾지 않았지만 코드를 수정 한 것 외에는 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; 
관련 문제