2010-08-12 55 views
0

我有一個表稱爲tblSport包含pkSportIDfldName列。
我有一個表稱爲tblRespondentSport其中包含列fkRespondentIDfkSportID有一個基本的問題加入

我想返回運動ID,運動名稱和受訪者人數。

這裏是我的查詢:

SELECT s.pkSportID AS id, s.fldSport AS sport, r.COUNT(*) AS count FROM tblSport AS s LEFT JOIN tblRespondentSport AS r ON s.pkSportID = r.fkSportID 

我得到一個MySQL錯誤1064和它說,它在附近算*()。我新來加入,所以我確定它是一件小事。提前致謝。

+0

你被遺漏的一組。當您進行計數(*)時,您必須在某個字段上進行分組以統計計數。在這種情況下,group by應該在fkSportID上。 – m0g 2010-08-12 14:13:30

回答

0

你缺少GROUP BY

SELECT s.pkSportID AS id, s.fldSport AS sport, COUNT(*) AS count 
FROM tblSport AS s LEFT JOIN tblRespondentSport AS r 
ON s.pkSportID = r.fkSportID 
GROUP BY s.pkSportID, s.fldSport 
+0

我在嘗試時遇到同樣的錯誤。另外,你能解釋GROUP BY嗎? – birderic 2010-08-12 14:00:26

+0

@birderic,我更正了查詢。 「group by」分組爲行並計算合計值。 – 2010-08-12 14:15:56

+0

當你在計數時,你正在尋找聚合某個字段並計算出現次數。做分組有助於完成這一點。例如,如果您通過SportID進行分組,並且您有兩次SportID號碼5,則會顯示sportID 5並進行計數,它將顯示兩個。 – m0g 2010-08-12 14:17:07

0

我認爲你需要改變r.COUNT(*) to COUNT(r.*).甚至只是COUNT(*)