Maison >base de données >tutoriel mysql >Comment joindre des tables avec des valeurs séparées par des virgules en SQL ?

Comment joindre des tables avec des valeurs séparées par des virgules en SQL ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-14 04:32:14984parcourir

How to Join Tables with Comma-Separated Values in SQL?

Joindre deux tables avec des valeurs séparées par des virgules

Problème :

Nous avons deux tables : Notes et positions. La table Notes contient une colonne appelée « forDepts » qui stocke les ID de service séparés par des virgules. Nous devons joindre ces tables et associer les valeurs « forDepts » aux noms de département correspondants de la table Positions.

Sortie souhaitée :

nid DepartmentName
1 Executive, Corp Admin, Art
2 Art, Marketing

Solution :

Étant donné que la structure de la base de données ne peut pas être modifiée, nous utiliserons la requête SQL suivante pour obtenir le résultat souhaité sortie :

SELECT  a.nid,
        GROUP_CONCAT(b.name ORDER BY b.id) DepartmentName
FROM    Notes a
        INNER JOIN Positions b
            ON FIND_IN_SET(b.id, a.forDepts) > 0
GROUP   BY a.nid

Explication :

  • La fonction GROUP_CONCAT est utilisée pour concaténer les valeurs de la colonne « nom » de la table Positions pour chaque ligne du Tableau Notes.
  • La clause ORDER BY garantit que les noms de département sont classés par leur IDs.
  • La fonction FIND_IN_SET vérifie si l'ID de service de la table Positions existe dans la colonne 'forDepts' de la table Notes. Si c'est le cas, la ligne correspondante est incluse dans la jointure.
  • La clause GROUP BY regroupe les résultats par la colonne 'nid' dans la table Notes, combinant efficacement tous les noms de département associés à chaque note.

En exécutant cette requête, nous pouvons obtenir le résultat souhaité, où les valeurs de la colonne « forDepts » de la table Notes sont remplacées par les noms de département correspondants, séparés par des virgules, du Tableau des postes. Cela facilitera l'export des données dans un fichier Excel à l'aide du code PHP fourni.

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