J'ai un problème avec une requête, le problème est que je suis laissé rejoindre trois fois de la même table.Requête avec plusieurs jointures ne retournera qu'une seule de mes jointures à gauche
La requête en question est la suivante:
SELECT
o.order_id,
n.title,
c.first_name,
tdv5.tid,
tdv6.name,
tdv8.name AS settlement_month
FROM orders o
join products p on o.product_id = p.nid
join node n on p.nid = n.nid
join customers c on o.customer_email = c.customer_email
join term_node tn on tn.nid = p.nid
join term_data tdv6 on tn.tid = tdv6.tid AND tdv6.vid = 6
left join term_data tdv5 on tn.tid = tdv5.tid AND tdv5.vid = 5
left join term_data tdv8 on tn.tid = tdv8.tid AND tdv8.vid = 8
Quand j'utilise cette requête que la première jointure en utilisant tn.tid fonctionnera. Pour un exemple si la seule jointure des trois derniers est la suivante:
join term_data tdv6 on tn.tid = tdv6.tid AND tdv6.vid = 6
Cela fonctionnera bien. La même chose avec
left join term_data tdv5 on tn.tid = tdv5.tid AND tdv5.vid = 5
Et
left join term_data tdv8 on tn.tid = tdv8.tid AND tdv8.vid = 8
Cependant quand je les combine, ils ne fonctionneront pas du tout. Seul tdv6 fonctionne quand je combine les trois requêtes.
Avez-vous des suggestions sur ce qui ne va pas? Merci.
Ensuite, il ne retournera aucune ligne du tout. J'ai besoin de valeurs NULL pour les jointures à gauche qui ne retournent rien. –
Si vous placez la condition dans WHERE, votre gauche rejoindra une jointure interne. – GolezTrol