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

Comment joindre des tables avec des champs de valeurs séparés par des virgules dans SQL ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-10 12:06:02401parcourir

How to Join Tables with Comma-Separated Value Fields in SQL?

Interrogation de plusieurs champs de jointure avec des valeurs séparées par des virgules

En SQL, lorsque vous traitez des tables contenant des listes séparées par des virgules (CSV) dans leurs domaines, il peut être difficile d'effectuer des jointures efficacement. Cet article explore un scénario spécifique dans lequel la colonne des catégories dans une table de films contient plusieurs ID de catégorie, et l'objectif est de l'exclure entièrement lors de la récupération des noms de catégorie correspondants à partir d'une table de catégories.

Les tableaux suivants illustrent le scénario. :

Table categories:
-id-       -name-
1          Action
2          Comedy
4          Drama
5          Dance

Table movies:
-id-       -categories-
1          2,4
2          1,4
4          3,5

Pour effectuer la jointure souhaitée, nous pouvons utiliser la fonction find_in_set() en conjonction avec une opération group_concat(). Voici la requête :

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

Explication de la requête :

  • find_in_set() vérifie si une sous-chaîne spécifiée existe dans une chaîne, dans ce cas, si un L'ID de catégorie de la table des catégories est présent dans le CSV de la colonne des catégories de la table des films.
  • La clause de jointure relie les deux tables basé sur la condition find_in_set().
  • group_concat() concatène tous les noms de catégories correspondants pour chaque ID de film en une seule chaîne.
  • La clause group by garantit que les résultats sont regroupés par ID de film , fournissant une sortie propre et organisée.

La sortie résultante affiche les ID de film ainsi que leurs noms de catégorie correspondants dans un format de tableau. Cela permet un accès facile aux catégories pertinentes sans avoir besoin de décoder le CSV dans le tableau des films.

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