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

Połącz wiele wierszy podrzędnych w jeden wiersz MYSQL

Najprostszym sposobem byłoby skorzystanie z funkcji grupowej GROUP_CONCAT tutaj..

select
  ordered_item.id as `Id`,
  ordered_item.Item_Name as `ItemName`,
  GROUP_CONCAT(Ordered_Options.Value) as `Options`
from
  ordered_item,
  ordered_options
where
  ordered_item.id=ordered_options.ordered_item_id
group by
  ordered_item.id

Co dałoby:

Id              ItemName       Options

1               Pizza          Pepperoni,Extra Cheese

2               Stromboli      Extra Cheese

W ten sposób możesz mieć tyle opcji, ile chcesz, bez konieczności modyfikowania zapytania.

Ach, jeśli zauważysz, że wyniki są przycinane, możesz zwiększyć limit rozmiaru GROUP_CONCAT w ten sposób:

SET SESSION group_concat_max_len = 8192;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy w MySQL jest rozróżniana wielkość liter w nazwach kolumn i tabel?

  2. Podziel wartość z jednego pola na dwa

  3. Jak zainstalować phpMyAdmina

  4. Dlaczego ten kod SQL daje błąd 1066 (Nieunikalna tabela/alias:„użytkownik”)?

  5. Napraw „BŁĄD 1136 (21S01):Liczba kolumn nie odpowiada liczbie wartości w wierszu 2” podczas korzystania z instrukcji VALUES w MySQL