MySQL : Conversion de plusieurs lignes en une seule ligne séparée par des virgules
Dans une base de données MySQL, vous pouvez rencontrer une situation dans laquelle vous souhaitez condenser plusieurs lignes en une seule ligne, avec des colonnes spécifiques représentées sous forme de valeurs séparées par des virgules. Ceci peut être réalisé en utilisant la fonction GROUP_CONCAT, comme démontré dans l'exemple de scénario suivant.
Exemple de scénario :
Considérez deux tables : DISH et DISH_HAS_DISHES, où DISH contient tous les plats disponibles, et DISH_HAS_DISHES définit une relation un-à-plusieurs entre les DISH. La table DISH a la structure suivante :
DISH: dish_id dish_name 1 dish_1 2 dish_2 3 dish_3 4 dish_4
Alors que la table DISH_HAS_DISHES ressemble à ceci :
DISH_HAS_DISHES: meal_id dish_id 1 2 1 3 1 4
Objectif :
Notre objectif consiste à transformer les données dans un format dans lequel chaque repas a une ligne correspondante, répertoriant ses identifiants et noms de plats sous forme de valeurs séparées par des virgules. Le résultat souhaité est :
meal_id dish_ids dish_names 1 2,3,4 dish_2, dish_3, dish_4
Solution :
Pour y parvenir, nous utiliserons la fonction GROUP_CONCAT, ainsi que quelques opérations JOIN simples :
SELECT m.meal_id, GROUP_CONCAT(dish_id) AS dish_ids, GROUP_CONCAT(dish_name) AS dish_names FROM DISH_HAS_DISHES m JOIN DISH d ON (m.dish_id = d.dish_id) GROUP BY meal_id
Dans cette requête :
En exécutant Avec cette requête, nous obtiendrons le résultat souhaité, où chaque ligne représente un repas, ses identifiants de plat et leurs noms de plat correspondants, tous représentés sous forme de valeurs séparées par des virgules. Cette technique est particulièrement utile lorsque vous travaillez avec des données tabulaires et consolidez des informations sur plusieurs lignes.
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!