Maison  >  Article  >  base de données  >  Comment puis-je combiner plusieurs lignes enfants en une seule ligne dans MySQL à l'aide de GROUP_CONCAT ?

Comment puis-je combiner plusieurs lignes enfants en une seule ligne dans MySQL à l'aide de GROUP_CONCAT ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-27 14:14:10503parcourir

How Can I Combine Multiple Child Rows into a Single Row in MySQL Using GROUP_CONCAT?

Joindre des lignes enfants pour une vue consolidée dans MySQL

Problème :

Combiner plusieurs lignes enfants d'une table dans un une seule ligne dans une autre table est une tâche courante dans la gestion de bases de données. Considérez le scénario suivant :

  • Deux tables existent, Ordered_Item et Ordered_Options.
  • Ordered_Item contient les noms d'éléments.
  • Ordered_Options inclut les options associées à chaque élément.

Le résultat souhaité est un tableau qui combine le nom de l'élément avec ses options correspondantes dans un ordre spécifique, même si l'ordre dans la table Ordered_Options est différent.

Solution :

Une approche efficace pour cette tâche consiste à utiliser la fonction GROUP_CONCAT de MySQL. Cette fonction permet la concaténation de valeurs de plusieurs lignes en une seule chaîne.

La requête suivante démontre l'utilisation de GROUP_CONCAT :

SELECT
  Ordered_Item.ID AS `Id`,
  Ordered_Item.Item_Name AS `ItemName`,
  GROUP_CONCAT(Ordered_Options.Value) AS `Options`
FROM
  Ordered_Item
INNER JOIN
  Ordered_Options ON Ordered_Item.ID = Ordered_Options.Ordered_Item_ID
GROUP BY
  Ordered_Item.ID

Sortie :

Cette requête renverra un tableau avec les colonnes suivantes :

Id ItemName Options
1 Pizza Pepperoni, Extra Cheese
2 Stromboli Extra Cheese

La colonne Options consolide les options pour chaque élément dans l'ordre souhaité.

Considérations supplémentaires :

  • Par défaut, MySQL limite la longueur maximale des résultats GROUP_CONCAT à 1024 caractères. Si vos options dépassent cette limite, vous pouvez augmenter la taille à l'aide de l'instruction SET SESSION group_concat_max_len.
  • L'ordre des options dans la sortie peut dépendre de l'ordre dans lequel les lignes sont traitées lors de l'exécution de la requête. Si un ordre cohérent est crucial, envisagez d'utiliser une clause ORDER BY dans la sous-requête qui récupère les options.

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