неправильное использование агрегата: COUNT () - PullRequest
0 голосов
/ 11 января 2019

у меня 2 таблицы rozmowa и abonent. Я пытаюсь сделать это:

dbGetQuery(con, "SELECT A.imie, A.nazwisko, A.numer, 
COUNT(R.id_abonent_to) AS ile 
FROM abonent A LEFT JOIN 
rozmowa R ON A.id = R.id_abonent_to 
WHERE ile > 4
GROUP BY A.id, A.imie, A.nazwisko, A.numer")

но я получаю ошибку

неправильное использование агрегата: COUNT ()

Может кто-нибудь объяснить мне, почему?

1 Ответ

0 голосов
/ 11 января 2019

Возможно, вы путаете WHERE с HAVING:

SELECT A.imie, A.nazwisko, A.numer, COUNT(*) AS ile
FROM abonent A JOIN
     rozmowa R
     ON A.id = R.id_abonent_to
GROUP BY A.id, A.imie, A.nazwisko, A.numer
HAVING COUNT(*) > 4;

Не все базы данных поддерживают псевдонимы столбцов в HAVING. Если у вас есть, вы можете использовать HAVING ile > 4.

Обратите внимание, что LEFT JOIN не требуется, так как вам требуется как минимум 5 соответствующих строк (Я предполагаю, что могут быть другие интерпретации вашего запроса, но я предполагаю, что подсчитываемые множественные строки получены из R.)

COUNT(*) - это упрощение. Столбец, используемый для COUNT(), является частью ON. Ваша версия COUNT() подходит для LEFT JOIN, но не нужна для того, что вы делаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...