Mysql
 sql >> Base de données >  >> RDS >> Mysql

Combiner plusieurs lignes enfants en une seule ligne MYSQL

Le moyen le plus simple serait d'utiliser la fonction de groupe GROUP_CONCAT ici.

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

Ce qui donnerait :

Id              ItemName       Options

1               Pizza          Pepperoni,Extra Cheese

2               Stromboli      Extra Cheese

De cette façon, vous pouvez avoir autant d'options que vous le souhaitez sans avoir à modifier votre requête.

Ah, si vous voyez que vos résultats sont rognés, vous pouvez augmenter la limite de taille de GROUP_CONCAT comme ceci :

SET SESSION group_concat_max_len = 8192;