Concaténation de plusieurs lignes enfants en une seule ligne dans MySQL
Lorsque vous travaillez avec des bases de données relationnelles, il est souvent nécessaire de combiner les données de plusieurs lignes en une seule ligne. Cette tâche peut être accomplie à l'aide de la fonction GROUP_CONCAT dans MySQL.
Énoncé du problème :
Considérez deux tables : Ordered_Item et Ordered_Options. La table Ordered_Item stocke les articles commandés, tandis que la table Ordered_Options enregistre les options associées à chaque article commandé. L'objectif est de créer une requête qui génère une seule ligne pour chaque article commandé, avec les options incluses dans des colonnes distinctes.
Solution :
La requête suivante combine les lignes à partir des tables Ordered_Item et Ordered_Options à l'aide de la fonction GROUP_CONCAT :
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 utilise la fonction GROUP_CONCAT pour concatène les valeurs de la colonne Value de la table Ordered_Options, séparées par des virgules. Les valeurs concaténées sont affectées à la colonne Options dans la sortie.
Sortie :
La sortie de la requête ressemblera à ce qui suit :
| Id | ItemName | Options | | --- | -------- | ------- | | 1 | Pizza | Pepperoni,Extra Cheese | | 2 | Stromboli | Extra Cheese |
Remarque :
Pour tenir compte des différences potentielles dans l'ordre des options, envisagez d'utiliser une instruction CASE pour triez les valeurs par Option_Number avant de les concaténer à l'aide de GROUP_CONCAT.
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!