0

次のクエリがあり、質問、それらの質問に対する可能な回答、および各回答がユーザーによって選択された回数で構成される結果セットが返されます。

SELECT  sq.question_id, sq.question_text, qo.question_option_id, qo.option_text, G.Total
FROM    dbo.survey_question sq
LEFT OUTER JOIN dbo.question_option qo 
ON sq.question_id = qo.question_id
LEFT OUTER JOIN
(SELECT ra.question_id, ra.question_option_id, count(*) AS Total
 FROM dbo.form_response_answers ra
 GROUP BY ra.question_option_id, ra.question_id ) G
    ON G.question_id = sq.question_id AND G.question_option_id = qo.question_option_id
ORDER BY
sq.question_id

これらの各レコードに、form_questionというテーブル内にあるform_idの列を追加する必要があります。form_questionテーブルには、上記のクエリに示されているquestion_idフィールドと一致する必要があるquestion_idフィールドも含まれています。ただし、クエリにまだ苦労しているため、これを追加しようとすると多くの問題が発生します。誰かがこれで私を少し助けてくれますか?

4

1 に答える 1

2

変更はコメントにあります。

SELECT  
    sq.question_id
    , sq.question_text
    , qo.question_option_id
    , qo.option_text
    , G.Total
-- ==================================================
    , fq.form_id
-- ==================================================
FROM dbo.survey_question sq
LEFT OUTER JOIN dbo.question_option qo 
    ON sq.question_id = qo.question_id
LEFT OUTER JOIN
(
    SELECT 
        ra.question_id
        , ra.question_option_id
        , count(*) AS Total
    FROM dbo.form_response_answers ra
    GROUP BY ra.question_option_id
        , ra.question_id 
) G
    ON G.question_id = sq.question_id 
    AND G.question_option_id = qo.question_option_id
-- ==================================================
-- Switch this to LEFT JOIN if there is a chance that
-- there won't be a form_question result for your
-- survey_question record.
-- Also, if there are multiple form_question records
-- for a survey_question, you might get more rows than
-- you're looking for.
INNER JOIN dbo.form_question fq
    ON fq.question_id = sq.question_id
-- ==================================================
ORDER BY sq.question_id
于 2012-04-09T16:28:35.020 に答える