Group by- und having MYSQL

stimmen
-2

Ich habe die folgende Abfrage, die mir das Ergebnis bekommt ich will, aber ich kann hier nicht groupe von „id_utilisateur“ ist die Abfrage:

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

Die Gruppe von id_utilisateur nicht funktioniert, i Ergebnisse für den gleichen Benutzer erhalten in mehreren Zeilen, wie kann ich dieses Problem lösen?

Dies ist das Ergebnis, das ich gegen den erwartet man bekommen

Geben

Veröffentlicht am 18/12/2018 um 11:13
quelle vom benutzer
In anderen Sprachen...                            


3 antworten

stimmen
0

wenn Sie wollen id_utilisateurdeutlich, dann müssen Sie group by id_utilisateur.

Ihre Abfrage hat GROUP BY u.id_utilisateur,d.id_dossier, müssen Sie es ändern GROUP BY u.id_utilisateur.

Wenn Sie mehr Spalten auf Ihrer Anfrage benötigen, setzen Sie dann Ihre Gruppe durch Anweisung in innere Abfrage und dann Tabellen verknüpfen.

Beantwortet am 18/12/2018 um 11:18
quelle vom benutzer

stimmen
2

GROUP BYalle nicht aggregierten Spalten in der 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 . . .

Wenn Sie explizit eine Zeile wollen pro u.id_utilisateur, dann aggregieren alle anderen Spalten:

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 . . .
Beantwortet am 18/12/2018 um 11:25
quelle vom benutzer

stimmen
0

Für diejenigen, die das gleiche Problem haben, löste ich dies einfach durch die Unterabfrage innerhalb eines und Zustand kommt und ich entfernte die having-Klausel für diese spezifische Abfrage.

Beantwortet am 18/12/2018 um 12:54
quelle vom benutzer

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