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

私がやりたいことは、セッション テーブルに基づいて各オプションを選択した男性の数を計算するクエリに新しい列を追加することです。

4

2 に答える 2

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
于 2012-12-26T21:55:36.530 に答える
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
于 2012-12-26T21:40:36.287 に答える