2012-12-26 50 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 
相關問題