Maison > base de données > tutoriel mysql > Comment récupérer plusieurs lignes sous la forme d'une seule ligne séparée par des virgules dans MySQL ?

Comment récupérer plusieurs lignes sous la forme d'une seule ligne séparée par des virgules dans MySQL ?

DDD
Libérer: 2024-11-14 13:49:02
original
473 Les gens l'ont consulté

How to Fetch Multiple Rows as a Single Comma-Separated Row in MySQL?

Récupération de plusieurs lignes sous la forme d'une seule ligne séparée par des virgules dans MySQL

Énoncé du problème :

Vous avez deux tables, "DISH" et "DISH_HAS_DISHES", où les plats sont liés avec une dépendance un-à-plusieurs. L'objectif est de récupérer les données des deux tables dans un format spécifique : une liste d'identifiants de plats et de noms séparés par des virgules pour chaque repas.

Solution proposée avec la fonction GROUP_CONCAT :

MySQL fournit la fonction GROUP_CONCAT, qui permet la concaténation de plusieurs lignes en fonction d'un délimiteur spécifié. En utilisant cette fonction, vous pouvez obtenir le résultat souhaité :

SELECT m.meal_Id, 
       GROUP_CONCAT(dish_id) dish_ids, 
       GROUP_CONCAT(dish_name) dish_names
FROM DISH_HAS_DISHES m JOIN DISH d ON (m.dish_id = d.dish_id)
GROUP BY meal_Id
Copier après la connexion

Explication :

  1. JOIGNEZ les "DISH_HAS_DISHES" (m) et "DISH" ( d) des tables basées sur le champ Dish_id commun.
  2. Utilisez GROUP_CONCAT(dish_id) pour concaténez les identifiants des plats dans une chaîne séparée par des virgules pour chaque repas. Stockez-le dans la colonne Dish_ids.
  3. De même, utilisez GROUP_CONCAT(dish_name) pour concaténer les noms de plats dans une chaîne séparée par des virgules et stockez-la dans la colonne Dish_names.
  4. GROUP BY repas_Id garantit que les résultats sont regroupés par ID de repas, ce qui donne une seule ligne pour chacun repas.

Cette requête doit produire le format de sortie souhaité :

meal_id dish_ids dish_names
1 2,3,4 dish_2, dish_3, dish_4

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal