Maison >base de données >tutoriel mysql >Comment combiner plusieurs lignes enfants en une seule ligne parent dans MySQL ?

Comment combiner plusieurs lignes enfants en une seule ligne parent dans MySQL ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-03 01:04:11689parcourir

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

Combinaison de plusieurs lignes enfants en une seule ligne parent dans MySQL

Lorsque vous traitez des tables structurées contenant des données imbriquées, il peut être utile de fusionner plusieurs lignes enfants dans une seule ligne parent pour fournir une vue plus agrégée des données. Un scénario courant dans lequel cela est nécessaire est lorsque vous travaillez avec des systèmes de gestion des commandes, tels que celui présenté dans l'exemple donné.

Considérez deux tableaux : Ordered_Item et Ordered_Options. La table Ordered_Item représente les articles commandés, tandis que la table Ordered_Options inclut des détails ou des options supplémentaires associés à chaque article commandé. L'objectif est de générer une requête qui combine la colonne Item_Name de la table Ordered_Item avec les valeurs d'option correspondantes de la table Ordered_Options, regroupées dans un ordre spécifique et séparées par des virgules.

Une solution efficace consiste à utiliser GROUP_CONCAT de MySQL. fonction, qui concatène les valeurs de plusieurs lignes, regroupées par une colonne spécifiée. La requête ci-dessous obtient 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
JOIN
  ordered_options
ON
  ordered_item.id = ordered_options.ordered_item_id
GROUP BY
  ordered_item.id

Cette requête produira le résultat suivant :

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

La fonction GROUP_CONCAT garantit que les valeurs d'option sont concaténées en une seule chaîne et préserve l'ordre des options en fonction de leur colonne Option_Number. Cette méthode est très efficace et peut gérer un grand nombre d'options sans nécessiter de solution statique ni de complexité supplémentaire dans la requête.

Pour gérer les cas où le résultat concaténé dépasse la longueur maximale par défaut de 1024 caractères, MySQL fournit la variable group_concat_max_len. Définir cette variable sur une valeur plus élevée, comme indiqué ci-dessous, permettra d'accepter des chaînes concaténées plus grandes :

SET SESSION group_concat_max_len = 8192;

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