Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Połącz jeden wiersz z wieloma wierszami w innej tabeli

Użyj:

   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

Potrzebujesz funkcji MySQL GROUP_CONCAT ( dokumentacja ), aby zwrócić oddzieloną przecinkami listę wartości PROPERTIES.property.

Użyłem LEFT JOIN zamiast JOIN, aby uwzględnić rekordy PEOPLE, które nie mają wartości w tabeli PROPERTIES - jeśli chcesz tylko listę osób z wartościami w tabeli PROPERTIES, użyj:

   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

Zdaję sobie sprawę, że jest to przykład, ale używanie nazwy to kiepski wybór dla integralności referencyjnej, jeśli weźmie się pod uwagę, ile jest „John Smith”. Lepszym wyborem byłoby przypisanie identyfikatora użytkownika, będącego unikalną wartością dla każdego użytkownika.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wybierz wiersze MYSQL, ale wiersze w kolumny i kolumny w wiersze

  2. Laravel dołącza do 3 stołów

  3. Jak połączyć się z MySQL na Amazon EC2 z poziomu Windows?

  4. Limit SQL WYBIERZ, ale nie JOIN

  5. rzucić ciąg na czas sql