Группировать и иметь MYSQL - PullRequest
       9

Группировать и иметь MYSQL

0 голосов
/ 18 декабря 2018

У меня следующий запрос, который дает мне желаемый результат, но я не могу группировать по id_utilisateur, вот запрос:

SELECT count(distinct d.id_dossier), p.name, u.id_utilisateur, u.superior
FROM dossier AS d
LEFT JOIN action AS a
ON a.id_dossier=d.id_dossier
LEFT JOIN CD AS cd
ON cd.id_dossier=d.id_dossier
LEFT JOIN utilisateur AS u
ON u.id_utilisateur=cd.id_utilisateur
LEFT JOIN personne AS p
ON p.id_personne=u.id_personne
WHERE d.id_dossier>0
GROUP BY u.id_utilisateur,d.id_dossier
HAVING (
    SELECT COUNT(a2.id_dossier)
    FROM action AS a2
    WHERE a2.fait=0
    AND a2.commentaire=0
    AND a2.id_dossier=d.id_dossier
)<1
ORDER BY d.date_creation DESC
LIMIT 500

Группа по id_utilisateur не работает, я получаю результатыдля одного и того же пользователя в несколько строк, как я могу решить это?

Это результат, который я получаю против ожидаемого

enter image description here

Ответы [ 3 ]

0 голосов
/ 18 декабря 2018

GROUP BY все неагрегированные столбцы в SELECT:

SELECT count(distinct d.id_dossier), p.name, u.id_utilisateur, u.superior
FROM . . .
WHERE . . .
GROUP BY  p.name, u.id_utilisateur, u.superior
HAVING . . .

Если вы явно хотите одну строку на u.id_utilisateur, агрегируйте все остальные столбцы:

SELECT count(distinct d.id_dossier),
       MAX(p.name) as name, u.id_utilisateur, 
       MAX(u.superior) as superior
FROM . . .
WHERE . . .
GROUP BY  p.name, u.id_utilisateur, u.superior
HAVING . . .
0 голосов
/ 18 декабря 2018

Для тех из вас, у кого возникла та же проблема, я решил эту проблему, просто поместив подзапрос в условие и, и удалил условие «Имея» для этого конкретного запроса.

0 голосов
/ 18 декабря 2018

если вы хотите id_utilisateur отличаться, то вам нужно group by id_utilisateur.

ваш запрос имеет GROUP BY u.id_utilisateur,d.id_dossier, вам нужно изменить его на GROUP BY u.id_utilisateur.

Если выВам нужно больше столбцов в запросе, затем поместите оператор group by во внутренний запрос и затем объедините ваши таблицы.

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