"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > 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 ?

Publié le 2024-11-16
Parcourir:187

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 ID de catégorie du La table des catégories est présente dans le CSV de la colonne des catégories de la table des films.
  • La clause de jointure relie les deux tables en fonction de la condition find_in_set().
  • group_concat() concatène toutes les catégories correspondantes. noms de chaque ID de film dans 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 s'affiche les identifiants de films ainsi que leurs noms de catégories 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.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3