In Datenbanken kann häufig das Problem auftreten dass man gern dort bereits Daten gruppieren möchte… aber oftmals kann man dafür nur Skalarwertfunktionen wie avg, max oder min nutzen. In mySQL gibt es gerade für Strings noch die Funktion group_concat.
Stellt euch mal vor, ihr habt 3 Zeilen in der DB und wollt die Spalte name z.b. gern Komma-getrennt in eurer Abfrage haben.. 😉
Tabelle 1 sind die Nutzer, Tabelle 2 sind die Straße die sie besitzen und die Ausgabe zeigt was wir wollen.
Erreichen kann man das in mySQL nun damit:
SELECT t1.ID, t1.Name, GROUP_CONCAT( t2.street ORDER BY t1.ID DESC SEPARATOR ', ' ) AS 'Straße' FROM tab1 t1 INNER JOIN tab2 t2 ON ( t1.ID = t2.FK ) GROUP BY t1.ID, t1.Name LIMIT 0 , 30
In TSQL gibt es solche eine Funktion natürlich nicht… 😉 – aber man kann diese wie folgt simulieren:
SELECT t1.ID, t1.name, STUFF( ( SELECT ',' + t3.street FROM tab2 t3 WHERE t3.FK = t1.ID FOR XML PATH ('') ) , 1, 1,'') as Street FROM tab1 t1 INNER JOIN tab2 t2 ON ( t1.ID = t2.FK )