Maison >base de données >tutoriel mysql >Comment récupérer les identifiants et les noms de plats séparés par des virgules pour chaque repas dans MySQL ?

Comment récupérer les identifiants et les noms de plats séparés par des virgules pour chaque repas dans MySQL ?

DDD
DDDoriginal
2024-11-09 10:21:02360parcourir

How to Retrieve Comma-Separated Dish IDs and Names for Each Meal in MySQL?

Récupération de valeurs séparées par des virgules à partir de plusieurs lignes dans MySQL

Dans ce scénario, vous disposez de deux tables, DISH et DISH_HAS_DISHES, avec une -à-plusieurs relations. DISH contient des plats, tandis que DISH_HAS_DISHES stocke la relation entre les repas et les plats. Votre objectif est de récupérer les données dans un format où chaque repas comporte une liste d'identifiants et de noms de plats séparés par des virgules.

Pour y parvenir, vous pouvez utiliser la fonction GROUP_CONCAT de MySQL. Cette fonction vous permet de concaténer les valeurs de plusieurs lignes en une seule chaîne, séparées par un délimiteur spécifié. Voici comment l'utiliser pour répondre à vos besoins :

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 :

  • GROUP_CONCAT(dish_id) concatène les ID de plat en une seule chaîne, séparés par des virgules, et l'attribue à l'alias Dish_ids.
  • GROUP_CONCAT(dish_name) de la même manière concatène les noms de plats.

La clause GROUP BY regroupe les résultats par repas_Id, garantissant que les valeurs séparées par des virgules sont regroupées en fonction de chaque repas.

Le résultat de cette requête sera être un tableau à trois colonnes :

  • meal_Id : Le repas ID.
  • dish_ids : une liste d'identifiants de plats séparés par des virgules associés au repas.
  • dish_names : une liste de noms de plats associés au repas, séparés par des virgules.

Cela vous fournira le résultat souhaité, où chaque repas a ses identifiants et noms de plats respectifs dans une seule virgule séparée. chaîne.

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