2012-07-18 124 views
1

我們有一個表(調查),它有不同的調查問題。每個survey_id在此表中只出現一次。Mysql查詢不求和多條記錄,只取第一條記錄

我們有一張投票表(vote_survey_table),它記錄每個調查問題的用戶投票。該表的字段爲survey_id,vote_yes,vote_no,user_id等。此表對於每個survey_id都有多個條目。

我想要查詢投票表來合計一個給定的調查問題的所有投票,但查詢我只提出行int他投票表的第一個實例。

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的所有實例並總結結果?我試着將LEFT JOIN改爲INNER JOIN,但是這也沒有辦法。

一如既往地提前致謝。

+0

一件事,你不使用'SUM'或'COUNT'任何地方。那麼你如何期待聚合發生? – RedFilter 2012-07-18 20:45:33

+0

分組不自動加起來。使用計數(是) – Alfabravo 2012-07-18 20:45:58

+0

字段是'vote_yes'和'vote_not'布爾字段嗎? – 2012-07-18 21:00:36

回答

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

+0

感謝你這樣做......它做到了。我知道我錯過了一些顯而易見的事情...... – Kevin 2012-07-18 20:59:23

1

你根本沒有總結。您應該使用聚合函數一樣

SELECT SUM(vote_survey_table.vote_yes) AS cnt 

http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html

+0

OP沒有告訴我們該領域是否有'1'或者不能加起來的東西。除此之外,我完全同意這個答案:) – Alfabravo 2012-07-18 20:49:26

+0

我應該提到的是,該字段是一個整數字段,其中包含一個計數。謝謝,修復工作! – Kevin 2012-07-18 20:58:47