Group by et having MYSQL

voix
-2

J'ai la requête suivante qui me obtient le résultat que je veux, mais je ne peux pas par groupe « id_utilisateur » est la requête ici:

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

Le groupe par id_utilisateur ne fonctionne pas, j'obtenir des résultats pour le même utilisateur sur plusieurs lignes, comment puis-je résoudre ce problème?

Ceci est le résultat que je reçois vs celui attendu

entrez

Créé 18/12/2018 à 11:13
source utilisateur
Dans d'autres langues...                            


3 réponses

voix
0

si vous voulez id_utilisateurdistincte, alors vous devez group by id_utilisateur.

votre requête a GROUP BY u.id_utilisateur,d.id_dossier, vous devez changer pour GROUP BY u.id_utilisateur.

Si vous avez besoin de plus de colonnes sur votre requête, puis mettez votre groupe par déclaration en requête interne puis se joindre à vos tables.

Créé 18/12/2018 à 11:18
source utilisateur

voix
2

GROUP BYtous les non agglomérées colonnes du 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 vous voulez explicitement une ligne par u.id_utilisateur, puis agréger toutes les autres colonnes:

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 . . .
Créé 18/12/2018 à 11:25
source utilisateur

voix
0

Pour ceux d'entre vous qui ont le même problème, je résolu ce problème en plaçant simplement la sous-requête dans une et l'état et j'ai supprimé la clause having pour cette requête spécifique.

Créé 18/12/2018 à 12:54
source utilisateur

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