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!