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
Libérer: 2024-12-03 01:04:11
original
676 Les gens l'ont consulté

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
Copier après la connexion

Cette requête produira le résultat suivant :

Id  ItemName         Options
1   Pizza            Pepperoni,Extra Cheese
2   Stromboli        Extra Cheese
Copier après la connexion

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;
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal