Julia: SQL-Abfrage stimmt nicht (Group_Concat)

Hi,
ich habe 3 Tabellen:

Tabelle "Auftraege"
--------------------
AuftragID
Anforderung
...

Tabelle "Verantwortlicher"
--------------------------
ID
AuftragID
VerantwortlicherID

Tabelle "Benutzer"
------------------
BenutzerID
NName
VName

Es handelt sich um einen vereinfachten Ausschnitt aus einer Auftragsverwaltung. Jeder neue Auftrag kann an mehrere Verantwortlichen vergeben werden. Über die AuftragID besteht zwischen Auftraege und Verantwortlicher eine Verbindung; den Namen des Verantwortlichen erhält man über die Verknüpfung VerantwortlicherID mit BenutzerID.

Ich möchte nun eine Abfrage haben, welcher Benutzer mit Namen welchen Auftrag bearbeitet. Meine SQL-Abfrage sah wie folgt aus:

SELECT Auftraege.AuftragID,
GROUP_CONCAT(CONCAT(VA.VName, ' ', VA.NName) SEPARATOR ', ') AS Verantwortlicher
FROM Auftraege
LET JOIN Auftrag_Verantwortlicher on Auftrag_Verantwortlicher.AuftragID = Auftraege.AuftragID
LEFT JOIN Benutzer AS VA ON VA.BenutzerID = Auftrag_Verantwortlicher.VerantwortlicherID
GROUP BY Auftraege.AuftragID

In der Ausgabe steht jetzt z.B.

AuftragID | Verantwortlicher
------------------------------------------------
67        | Manuela Mustermann, Klaus Mustermann
68        | Manuela Mustermann
69        | Klaus Mustermann

So weit, so gut. Jetzt komme ich natürlich an den Punkt, wo ich Manuela Mustermann nur ihre eigenen Aufträge anzeigen will, aber gleichzeitig auch anzeigen, daß sie den Auftrag zusammen mit jemand anders bearbeitet.
Sämtliche Einschränkungen wie "WHERE VA.BenutzerID = 5" führen leider zu folgendem Ergebnis:

AuftragID | Verantwortlicher
------------------------------------------------
67        | Manuela Mustermann
68        | Manuela Mustermann

Ich hätte natürlich gerne:
AuftragID | Verantwortlicher
------------------------------------------------
67        | Manuela Mustermann, Klaus Mustermann
68        | Manuela Mustermann

Hat jemand eine Idee?

Viele Grüße vom Huhn

  1. Moin!

    Sämtliche Einschränkungen wie "WHERE VA.BenutzerID = 5" führen leider zu folgendem Ergebnis:

    Die WHERE-Klausel filtert, bevor GROUP BY angewandt wird. Wenn du die Benutzer-ID auf 5 einschränkst, kommt natürlich kein anderer Mitarbeiter mehr "durch".

    HAVING filtert NACH dem GROUP BY. Damit kannst du das Ergebnis der Gruppierung einschränken - allerdings ist das natürlich ein wenig komplizierter, weil du ja keine alleinstehende Benutzer-ID mehr hast.

    - Sven Rautenberg

    --
    "Love your nation - respect the others."