[MySQL] 2 Tupel als einen darstellen

Steusi

Nasenbär
Hallo Leute,
ich würde gern bei einer M zu N Beziehung folgendes realisieren, das statt 2 Tupel nur ein Tupel ausgegeben wird. Am besten ich zeige es an einem einfachen Beispiel:

schnell mal ein einfaches Query:
SQL:
SELECT user.user_familyname, pc.pc_name
FROM user, pc, link
WHERE 
pc.pc_id = link.link_pcid 
AND
user.user_id = link.link_usercid

Dann erhalte ich beispielsweise folgende Ausgabe:
Code:
user_familyname | pc_name
Meier | PC01
Meier | PC02

Besteht die Möglichkeit folgende Ausgabe zu erhalten?:
Code:
user_familyname | pc_name
Meier | PC01, PC02

Möchte mir damit etwas Arbeit im späteren Verlauf mit PHP sparen.

Aber ist so etwas realisierbar?
 
Zuletzt bearbeitet von einem Moderator:
GROUP_CONCAT()

SQL:
SELECT
    user_familyname,
    GROUP_CONCAT(pc_name ORDER BY pc_name SEPARATOR ', ') AS pc_name
FROM
   (Dein Select als Subselect) AS list$
GROUP BY user_familyname
 
Zuletzt bearbeitet von einem Moderator:
Danke vielmals :)
Habe sowohl bei GROUP BY als auch bei CONCAT nachgelesen, aber selbst erhielt ich auf diese Weise nicht das gewünschte Bild.

Welche Rolle spielt list$ ? Ich kann doch jeden Bezeichner wählen, oder drückt man mit dem $-Zeichen etwas aus?
 
PHP:
$fehler = "dummer Tippfehler";
echo("Und ist das Programm noch so klein, es passt immer noch ein ".$fehler". rein!");
oh, das $ ist ein Schreibfehler. 'list' ist einfach ein Alias für das Subquery. MySQL will für Subqueries im FROM-Teil immer ein Alias haben.
Kannst auch 'myData' oder sonstwas nehmen
 
Genau so war es mir auch bekannt, wie du es beschrieben hast :) Ich dachte nur mal drückt mit dem $-Zeichen aus, das diese Tabelle nicht mehr benötigt wird, nur ein Alias halt Pflicht ist, sodass jemand anderes die Abfrage leichter verstehen kann.

Aber Tippfehler sind immer böse
 
Zurück