Maison >base de données >tutoriel mysql >Comment combiner plusieurs lignes enfants en une ligne parent unique dans MySQL à l'aide de GROUP_CONCAT ?

Comment combiner plusieurs lignes enfants en une ligne parent unique dans MySQL à l'aide de GROUP_CONCAT ?

DDD
DDDoriginal
2024-11-27 17:07:11799parcourir

How to Combine Multiple Child Rows into a Single Parent Row in MySQL Using GROUP_CONCAT?

Combiner des lignes enfants en une seule ligne parent dans MySQL

Le défi présenté ici consiste à combiner les données de deux tables : Ordered_Item et Ordered_Options. L'objectif est de générer une seule ligne pour chaque élément dans Ordered_Item, y compris une concaténation de toutes les options associées à cet élément à partir de Ordered_Options.

Structure de la base de données

**Ordered_Item**
ID | Item_Name
1  | Pizza
2  | Stromboli

**Ordered_Options**
Ordered_Item_ID | Option_Number | Value
1               43         Pepperoni
1               44         Extra Cheese
2               44         Extra Cheese

Solution proposée

La tentative de requête fournie, bien qu'elle ne soit pas syntaxiquement correcte, démontre un approche possible utilisant plusieurs jointures. Cependant, une solution plus efficace peut être obtenue en utilisant la fonction GROUP_CONCAT.

GROUP_CONCAT permet la concaténation des valeurs de plusieurs lignes en une seule chaîne. La requête suivante utilise GROUP_CONCAT pour obtenir le résultat souhaité :

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

Sortie

Id              ItemName       Options

1               Pizza          Pepperoni,Extra Cheese

2               Stromboli      Extra Cheese

Considérations supplémentaires

  • Options multiples : Cette solution peut gérer n'importe quel nombre d'options par article sans nécessiter modifications supplémentaires à la requête.
  • Troncation : Si le résultat concaténé dépasse la longueur maximale par défaut, envisagez d'utiliser SET SESSION group_concat_max_len = 8192; pour augmenter la limite.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn