1

さまざまな調査質問があるテーブル(調査)があります。各survey_idは、このテーブルに1回だけ表示されます。

投票の表(vote_survey_table)があり、各調査の質問に対するユーザーの投票がログに記録されます。このテーブルには、survey_id、vote_yes、vote_no、user_idなどのフィールドがあります。このテーブルには、survey_idごとに複数のエントリがあります。

投票テーブルにクエリを実行して、特定の調査質問のすべての投票を合計しようとしていますが、作成したクエリでは、投票テーブルの行の最初のインスタンスのみが追加されます。

SELECT survey.survey_id, vote_survey_table.vote_yes AS cnt,
survey.survey_name, survey.survey_details 
FROM survey 
LEFT JOIN vote_survey_table AS votedb ON vote_survey_table.vote_survey_id = survey.survey_id
GROUP BY survey.survey_id
ORDER BY cnt DESC, survey.survey_id LIMIT 0,5

投票テーブルのsurvey_idのすべてのインスタンスを合計し、結果を合計するようにクエリに指示する必要があるこのクエリには何が欠けていますか?LEFTJOINをINNERJOINに変更してみましたが、うまくいきませんでした。

いつものように事前に感謝します。

4

2 に答える 2

1

投票を合計する必要があります。

SELECT survey.survey_id, SUM(vote_survey_table.vote_yes) AS cnt,
       survey.survey_name, survey.survey_details 
FROM survey LEFT JOIN vote_survey_table AS votedb 
              ON vote_survey_table.vote_survey_id = survey.survey_id
GROUP BY survey.survey_id, survey.survey_name, survey.survey_details 
ORDER BY cnt DESC, survey.survey_id LIMIT 0,5

vote_yesがブール フィールドの場合は、COUNT代わりに を使用しSUMます。

于 2012-07-18T20:46:36.450 に答える
1

あなたはまったく要約していません。次のような集計関数を使用する必要があります

SELECT SUM(vote_survey_table.vote_yes) AS cnt

http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.htmlを参照してください。

于 2012-07-18T20:47:37.457 に答える