Ilja: SELECT/JOIN/SQL-statement richtig formulieren

Beitrag lesen

moin,

SELECT projekt, rolle, GROUP_CONCAT(DISTINCT UserName)
        FROM projekte
        LEFT JOIN dispo
  ON projekte.id = dispo.projekt_id
        LEFT JOIN users
  ON dispo.user_id = users.UserID
JOIN rollen
  ON dispo.rolle_id = rollen.id
        GROUP BY projekt

funktioniert und liefert mir z.B.:

jeder hat ja seinen stil, wie man abschreiben erstellt, aber bei diese darstellung ist schon nicht einfach zu lesen. nur als tipp gemeint, versuche mal eine andere darstellung, auch aliasnamen helfen immens.

nun aber zu der eigentlichen frage, diese abfrage kann so nicht funktionieren, du unterliegst einem mysql bug. dafür gibt es mittlerweile soviel postings hier im forum über diesen "bug", dass wir mysql eine rechnung stellen sollten. du gibst die spalten "rolle" aus, ohne darüber gruppiert zu haben.

das andere ist, du machst auf die tabelle "dispo", die du vorher mit einem OUTER LEFT JOIN eingebunden hast, zusätzlich danach noch einen INNER JOIN auf eine die tabelle "rollen". das macht keinen sinn, weill du dann wieder datensätze verlieren kannst, die du durch den LEFT JOIN eigentlich haben wolltest.

und um dein problem zu lösen, dass du Datensätze als spalten darstellen willst, das geht, wenn du die Anzahl der Spalten genau weisst, sprich eine spalte für technik, eine für grafik .... also bekannt und endlich sind. dazu kannst du korrelierte unterabfragen benutzen. unterabfragen bei mysql gehen aber erst ab version 4.1. und da du uns version verschwiegen hast....

Ilja