Agrupar por e tendo MYSQL

votos
-2

Eu tenho a seguinte consulta que me obtém o resultado que eu quero, mas não posso groupe por id_utilisateur aqui está a consulta:

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

O grupo por id_utilisateur não está funcionando, eu obter resultados para o mesmo usuário em várias linhas, como posso resolver isso?

Este é o resultado que eu obter vs o esperado

digite

Publicado 18/12/2018 em 11:13
fonte usuário
Em outras línguas...                            


3 respostas

votos
0

se você quiser id_utilisateurdistinta, então você precisa group by id_utilisateur.

sua consulta tem GROUP BY u.id_utilisateur,d.id_dossier, você precisa alterá-lo para GROUP BY u.id_utilisateur.

Se você precisar de mais colunas em sua consulta, em seguida, colocar o seu grupo pela declaração em consulta interna e depois juntar suas tabelas.

Respondeu 18/12/2018 em 11:18
fonte usuário

votos
2

GROUP BYtodos os não agregadas colunas no 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 . . .

Se você quiser explicitamente uma linha por u.id_utilisateur, em seguida, agregar todas as outras colunas:

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 . . .
Respondeu 18/12/2018 em 11:25
fonte usuário

votos
0

Para aqueles de vocês que têm o mesmo problema, eu resolvi isso, basta colocar a subconsulta dentro de um e condição e eu removi a cláusula Tendo para esta consulta específica.

Respondeu 18/12/2018 em 12:54
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more