Group by y having MYSQL

votos
-2

Tengo la siguiente consulta que me obtiene el resultado que quiero, pero no puedo por Groupe id_utilisateur aquí está la 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

El grupo de id_utilisateur no está funcionando, consigo resultados para el mismo usuario en múltiples líneas, ¿cómo puedo solucionar esto?

Este es el resultado consigo vs el esperado

introducir

Publicado el 18/12/2018 a las 11:13
fuente por usuario
En otros idiomas...                            


3 respuestas

votos
0

si quieres id_utilisateurdistinta, entonces necesita group by id_utilisateur.

su consulta tiene GROUP BY u.id_utilisateur,d.id_dossier, es necesario cambiarlo a GROUP BY u.id_utilisateur.

Si necesita más columnas en la consulta, a continuación, poner su grupo por la declaración en la consulta interna y luego unirse a las tablas.

Respondida el 18/12/2018 a las 11:18
fuente por usuario

votos
2

GROUP BYtodos los no agregados columnas en el 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 . . .

Si desea explícitamente una fila por u.id_utilisateur, a continuación, agregar todas las otras columnas:

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 . . .
Respondida el 18/12/2018 a las 11:25
fuente por usuario

votos
0

Para aquellos de ustedes que tienen el mismo problema, he resuelto esto, simplemente colocando la subconsulta dentro de una y la condición y me quita la cláusula HAVING para esta consulta específica.

Respondida el 18/12/2018 a las 12:54
fuente por usuario

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