Maison > base de données > tutoriel mysql > le corps du texte

Comment joindre des tables avec des champs de jointure séparés par des virgules ?

Patricia Arquette
Libérer: 2024-11-10 22:23:02
original
214 Les gens l'ont consulté

How to Join Tables with Comma-Separated Join Fields?

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

Dans la gestion de bases de données, il est souvent nécessaire de joindre des tables en fonction d'un champ qui contient plusieurs valeurs séparées par des virgules. Cela présente un défi lors de l'exécution de requêtes qui excluent le champ de jointure et sélectionnent à la place les valeurs correspondantes dans la table associée.

Dans ce scénario, nous avons deux tables, catégories et films, où la colonne catégories de la table films contient une liste d'ID de catégorie séparés par des virgules. Notre objectif est d'effectuer une requête qui récupère les catégories de chaque film dans un format de tableau.

Solution

Une façon d'y parvenir est d'utiliser l'opération JOIN avec une sous-requête qui utilise la fonction find_in_set(). La fonction find_in_set() vérifie si une valeur spécifiée existe dans une chaîne séparée par des virgules.

La requête suivante montre comment joindre les tables de films et de catégories en fonction des ID de catégorie séparés par des virgules :

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

Explication

  • La fonction find_in_set() est utilisée dans la clause JOIN pour trouver les catégories communes entre les tables de films et de catégories.
  • La fonction group_concat() est utilisée pour concaténer les noms de catégories sélectionnées en une seule chaîne pour chaque film.
  • La clause group by regroupe les résultats par ID de film pour garantir que chaque film possède son propre tableau de catégories.

Sortie

La sortie de la requête est un tableau avec deux colonnes : id (l'ID du film) et catégories (un tableau de noms de catégories ). Par exemple, le résultat pourrait ressembler à ceci :

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

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