2011-03-03 4 views
0

user_id, key, value 및 flag 열이있는 테이블이 있습니다. SELECT, FROM, WHERE, GROUP BY 및 ORDER BY는 예상대로 자체적으로 작동합니다. 테이블에 키를 추가하려고 할 때 구문을 확인하라는 오류가 발생합니다. 열쇠는 질문이며 값은 답입니다. 모든 질문을 가능한 모든 대답과 그 대답이 얼마나 자주 발생했는지 보여주는 결과를 원합니다.표를 계산하는 MySQL 쿼리

SELECT value AS 'Answer', count(*) AS 'Total Votes' 
FROM survey_data sd 
INNER JOIN (SELECT key FROM sd GROUP BY key) T1 ON T1.key = sd.key 
WHERE flag != 1 
GROUP BY value 
ORDER BY 'Total Votes' DESC 

무엇이 여기에 있습니까?

참고로 INNER JOIN없이이 쿼리를 실행하면 결과가 '총 투표 수'에 의해 DESC로 정렬되지 않습니다. 왜 그 원인을 알 수 있습니까?

덕분에, 라이언

답변

7

키는 예약 된 단어입니다.

http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html

은 당신의 분야

편집의 이름을 바꾸 역 따옴표 (ALT + 96) 또는 내부에 넣어. 두 개 이상의 단어가 포함 된 별칭을 사용하는 경우에는 역 따옴표를 사용해야합니다. 그래서 역 따옴표 전에 넣어 따옴표

없이 총 투표 후 total votes 내림차순으로

위해 절하여 순서를 변경합니다. 나는 내 게시물에서 그들을 보지 못하거나 더 나은 하나의 단어로 필드 별칭을 변경합니다.

+0

완벽하게 작동했습니다 ... 좋은 조언! – NightHawk

0

나는 MSSQL 사람이므로 도움이 될지 확실하지 않지만 정규화 된 열을 사용하십시오. table.column

SELECT sd.value AS 'Answer', count(sd.*) AS 'Total Votes' 
FROM survey_data sd 
INNER JOIN (SELECT sd.key FROM sd GROUP BY sd.key) T1 ON T1.key = sd.key 
WHERE sd.flag != 1 
GROUP BY sd.value 
ORDER BY 'Total Votes' DESC