Maison > base de données > tutoriel mysql > Comment joindre des tables avec des champs de jointure séparés par des virgules : une solution SQL ?

Comment joindre des tables avec des champs de jointure séparés par des virgules : une solution SQL ?

Linda Hamilton
Libérer: 2024-11-21 06:34:16
original
258 Les gens l'ont consulté

How to Join Tables with Comma-Separated Join Fields: A SQL Solution?

Joindre des tables avec des champs de jointure séparés par des virgules

Lors de l'intégration de données de plusieurs tables, il peut être nécessaire d'effectuer des jointures sur des champs contenant listes séparées par des virgules. Cela peut poser un défi pour les méthodes de jointure traditionnelles. Considérez le scénario suivant :

Scénario :

Il existe deux tableaux, catégories et films. Le tableau des catégories contient des catégories avec des identifiants et des noms uniques. La table des films comprend une colonne de catégories qui stocke plusieurs ID de catégorie sous forme de liste séparée par des virgules. La tâche consiste à joindre ces tables, en excluant la colonne des catégories de la table des films et en sélectionnant à la place les noms de catégories correspondants de la table des catégories dans un tableau.

Solution :

Pour surmonter ce défi, une modification de la syntaxe de jointure standard peut être utilisée :

select
    m.id,
    group_concat(c.name)
from
    movies m
    join categories c on find_in_set(c.id, m.categories)
group by
    m.id
Copier après la connexion

Dans cette requête, la fonction find_in_set() est utilisée dans la jointure condition. Cette fonction vérifie si l'ID de catégorie de la table des catégories existe dans la liste des ID de catégorie séparés par des virgules dans la table des films.

La fonction group_concat() est utilisée dans la clause SELECT pour concaténer tous les noms de catégorie correspondants. dans un tableau. La clause group by garantit que les données sont regroupées par ID de film, produisant une ligne pour chaque film avec ses noms de catégorie associés.

Exemple :

Considérez l'échantillon fourni dans la question :

Tableau catégories :

id name
1 Action
2 Comedy
4 Drama
5 Dance

Films de table :

id categories
1 2,4
2 1,4
4 3,5

L'exécution de la requête de jointure modifiée produirait le résultat suivant :

Sortie du tableau :

id categories
1 Comedy,Drama
2 Action,Drama
4 Other,Dance

Dans ce résultat, la colonne catégories de la table films a été exclus et les noms de catégories correspondants du tableau des catégories ont été sélectionnés dans un tableau pour chaque film.

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