2010-08-12 3 views
0

У меня есть таблица с именем tblSport, который содержит столбцы pkSportID и fldName.
У меня есть таблица с именем tblRespondentSport, который содержит столбцы fkRespondentID и fkSportID.Имея проблемы с основным присоединиться

Я хочу вернуть идентификатор спорта, название спорта и количество респондентов.

Вот мой запрос:

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 

Я получаю 1064 ошибку MySQL и говорит, что его рядом с * в COUNT(). Я новичок, и я уверен, что это нечто тривиальное. Заранее спасибо.

+0

Вы пропускаете группу по. Когда вы выполняете подсчет (*), вам нужно сделать группу в каком-либо поле для агрегирования счета. В этом случае группа должна быть на fkSportID. – m0g

ответ

0

Вы отсутствуете Группу 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

+0

@birderic, я исправил запрос. «group by» - это сгруппированные строки и рассчитанное агрегированное значение. –

+0

Когда вы делаете подсчет, вы хотите собрать определенное поле и подсчитать количество вхождений. Выполнение группы помогает выполнить это. Например, если вы группируете SportID, и у вас есть два входа в SportID номер 5, он отобразит sportID 5 и подсчет, он отобразит два. – m0g

0

Я думаю, что вам нужно изменить r.COUNT(*) to COUNT(r.*). или даже просто COUNT(*)

Смежные вопросы