Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Combine várias linhas filhas em uma linha MYSQL


A maneira mais fácil seria usar a função de grupo GROUP_CONCAT aqui.
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

O que produziria:
Id              ItemName       Options

1               Pizza          Pepperoni,Extra Cheese

2               Stromboli      Extra Cheese

Dessa forma, você pode ter quantas opções quiser sem precisar modificar sua consulta.

Ah, se você vir seus resultados sendo cortados, você pode aumentar o limite de tamanho de GROUP_CONCAT assim:
SET SESSION group_concat_max_len = 8192;