Maison > base de données > tutoriel mysql > Comment puis-je effectuer des jointures conditionnelles basées sur des noms de tables énumérés dans MySQL ?

Comment puis-je effectuer des jointures conditionnelles basées sur des noms de tables énumérés dans MySQL ?

Mary-Kate Olsen
Libérer: 2024-12-10 05:57:17
original
830 Les gens l'ont consulté

How Can I Perform Conditional Joins Based on Enumerated Table Names in MySQL?

Jointures conditionnelles dans MySQL

Lorsque vous traitez des tables contenant une valeur énumérée représentant le nom de table d'une autre table, il devient nécessaire d'effectuer une jointure basée sur la valeur du type. Cela pose un défi unique dans MySQL, car il ne prend pas en charge les jointures dynamiques.

Cependant, une solution de contournement peut être obtenue en utilisant des expressions de cas et des jointures multiples.

Un exemple simple serait une table avec les colonnes id1, id2 et type. La colonne type contient le nom d'une autre table. Pour rejoindre la table des types en fonction de la valeur du type, on peut utiliser l'approche suivante :

SELECT
t.id,
t.type,
t2 .id AS id2,
t3.id AS id3

FROM
t

LEFT JOIN
t2 ON t2.id = t.id AND t.type = ' t2'

GAUCHE JOIN
t3 ON t3.id = t.id AND t.type = 't3'

Cette requête effectuera une jointure gauche sur les tables t2 et t3 en fonction de la valeur du type. Si la valeur du type correspond à t2, elle renverra la colonne id de t2 sous la forme id2. De même, si la valeur de type correspond à t3, elle renverra la colonne id de t3 sous la forme id3.

Bien qu'elle ne soit pas aussi élégante qu'une jointure dynamique, cette méthode permet des jointures conditionnelles basées sur des noms de tables énumérés dans MySQL.

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