Hallo!
Ich habe Schwierigkeiten eine SQL-Abfrage zu formulieren, die die Ausgabe erziehlt, die ich brauche. Ich bastele an einem Projektmanagement-Tool (Apache und mySQL-Datenbank) das Projekte, Benutzer und Aufgaben beinhaltet. mein Datenbankdesign sieht (dank EKKis Hilfe) mittlerweile folgendermaßen aus:
tabelle projekte
ID | projekt| ...
---+--------+-----
1 | blabla |
2 | blubb |
users
UserID | UserName | ...
-------+----------+-----
1 | Hans |
2 | Jochen |
3 | Peter |
rolle
ID | name | ...
---+---------------+-----
1 | Projektleiter |
2 | Technik |
3 | Grafik |
dispo
ID | projekt_id | user_id | rolle_id | ...
---+------------+-------------+----------+-----
1 | 1 | 1 | 1 |
2 | 1 | 3 | 2 |
3 | 1 | 4 | 3 |
4 | 2 | 2 | 1 |
5 | 2 | 1 | 2 |
6 | 2 | 3 | 3 |
Meine Abfrage bisher:
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.:
projekt | rolle | GROUP_CONCAT(DISTINCT UserName)
--------+----------------+--------------------------------
blabla | projektleiter | Hans
blubb | Technik | Hans, Jochen
blerch | grafik | Jochen, Peter
Was ich haben möchte, ist eine Ausgabe wie folgende:
projekt | projektleiter | technik | grafik
--------+----------------+---------+--------
blabla | Hans | Hans |
| | |Hans
| | |Jochen
blerch | Jochen | Jochen |Peter
| | Hans |
Also die Werte der Rollen als Spaltenüberschriften. Das bekomme ich aber nicht hin. Wie muß ich denn JOINen um "SELECT projekt, projektleiter, technik..." ausführen zu können?
Vielen Dank,
Paco