Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Verbinden Sie eine Zeile mit mehreren Zeilen in einer anderen Tabelle

Verwendung:

   SELECT x.name,
          GROUP_CONCAT(y.property SEPARATOR ', ')
     FROM PEOPLE x
LEFT JOIN PROPERTIES y ON y.name = x.name
    WHERE x.age > 26
 GROUP BY x.name

Sie möchten die MySQL-Funktion GROUP_CONCAT ( Dokumentation ), um eine durch Kommas getrennte Liste des Werts PROPERTIES.property zurückzugeben.

Ich habe einen LEFT JOIN anstelle eines JOIN verwendet, um PEOPLE-Datensätze einzuschließen, die keinen Wert in der PROPERTIES-Tabelle haben. Wenn Sie nur eine Liste von Personen mit Werten in der PROPERTIES-Tabelle haben möchten, verwenden Sie:

   SELECT x.name,
          GROUP_CONCAT(y.property SEPARATOR ', ')
     FROM PEOPLE x
     JOIN PROPERTIES y ON y.name = x.name
    WHERE x.age > 26
 GROUP BY x.name

Mir ist klar, dass dies ein Beispiel ist, aber die Verwendung eines Namens ist eine schlechte Wahl für die Referenzintegrität, wenn man bedenkt, wie viele "John Smith"s es gibt. Die Zuweisung einer user_id, die ein eindeutiger Wert pro Benutzer ist, wäre eine bessere Wahl.