2012-12-26 2 views
0

테이블이 4 개 있고 '질문'테이블이 필요하지 않지만 다른 테이블의 질문 ID .다른 테이블을 기반으로 테이블에서 계산하는 방법

Questions 
-------- 
ID 
Question 


Question_Options 
-------- 
ID 
Question_ID 
Option_Label 


Session 
-------------- 
ID  
GENDER 


Session_Answers 
----------------- 
ID 
Session_ID 
Option_ID 
Question_ID 

나는 다음과 같은 계산 : 내가 원하는 무엇 때문에

SELECT Q.Option_Label as Choice, COALESCE((SELECT COUNT(*) FROM Session_Answers S WHERE S.Option_ID = Q.ID),0) as Votes 
FROM Question_Options Q 
    INNER JOIN Session_Answers S 
     ON Q.Question_ID = S.Question_ID 
WHERE Q.Question_ID = 10114<---the Question ID 
GROUP BY Q.ID,Q.option_label 

같은 특정 문제에서 각 옵션에 대한 투표 수는의를 계산 쿼리에 새 열을 추가입니다 세션 테이블을 기반으로 각 옵션을 선택한 남성 수입니다.

답변

0

당신이 할 수 있습니다 :

SELECT QO.Question_ID, QO.Option_Label as Choice, COUNT(*) as VotesMale 
FROM Question_Options QO 
LEFT JOIN Session_Answers SA ON QO.ID = SA.Option_ID 
JOIN [Session] S ON S.ID = SA.Session_ID AND S.Gender = 'M' 
WHERE QO.Question_ID = 10114<---the Question ID 
GROUP BY QO.Question_ID, QO.Option_label 
+0

감사 남자, 완벽한 :)를 작동 –

0

성별로 필터링 된 세션 테이블에서 추가 카운트를 간단히 추가 할 수 있습니다.

SELECT Q.Option_Label as Choice, COALESCE((SELECT COUNT(*) FROM Session_Answers SA WHERE 
SA.Option_ID = Q.ID),0) as Votes, 
COALESCE((SELECT COUNT(*) FROM Session SM WHERE 
S.Session_ID = SM.Session_ID AND Gender='M'),0) as MalesSessions 
FROM Question_Options Q 
    INNER JOIN Session_Answers S 
    ON Q.Question_ID = S.Question_ID 
WHERE Q.Question_ID = 10114 ---the Question ID 
GROUP BY Q.ID,Q.option_label 
관련 문제