2012-07-18 1 views
1

서로 다른 설문 질문이있는 테이블 (설문 조사)이 있습니다. 각 survey_id는이 표에 한 번만 나타납니다.Mysql 첫 번째 레코드 만 가져 오기만하면 여러 레코드가 합쳐지지 않습니다.

각 설문 조사 질문에 대한 사용자 투표 수를 기록하는 표 (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의 모든 인스턴스를 추가하고 결과를 요약하는 쿼리를 말해야한다이 쿼리에 실종 무엇입니까? LEFT JOIN을 INNER JOIN으로 바꾸려고 시도했지만 트릭도하지 않았습니다.

언제나처럼 미리 감사드립니다.

+0

참조

SELECT SUM(vote_survey_table.vote_yes) AS cnt 

같은 집계 함수를 사용해야합니다. 그렇다면 어 그리 게이션이 어떻게 발생할 것으로 예상됩니까? – RedFilter

+0

그룹화가 자동으로 추가되지 않습니다. count (yes) 사용 – Alfabravo

+0

필드'vote_yes'와'vote_not' 부울 필드가 있습니까? –

답변

1

투표 수를 합산해야합니다. vote_yes 부울 필드 인 경우

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 

, 다음 COUNT 대신 SUM 사용합니다.

+0

고마워 ... 트릭을 했어. 나는 명백한 무엇인가 놓치고있는 것을 알고 있었다. .. – Kevin

1

전혀 요약하지 않았습니다. 당신은, 당신은`사용하여 어디서든 SUM` 또는`COUNT`하지 않는 한 가지 들어 http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html

+0

필드가 '1'또는 더할 수없는 무엇인가 가지고 있으면 우리에게 OP가 말하지 않았다. 그 이외에, 나는이 대답에 완전히 동의한다. :) – Alfabravo

+0

필자는 그것을 언급 했어야한다. 그렇다. 필드는 그 필드에 정수 필드가있다. 고마워, 고침은 일했다! – Kevin

관련 문제