Nous avions la requête suivante dans SQL Server:convertir requête de serveur SQL externe oracle joindre question
SELECT b.columnB,
b.displayed_name AS displayName,
c.type_cd,
c.type_desc,
b.month_desc AS month
FROM table1 a, table2 b, table3 c
WHERE b.region_code *= a.columnA
AND c.program_type_cd *= a.program_type_cd
qui, dans l'oracle, se convertit à:
SELECT b.columnB,
b.displayed_name displayName,
c.type_cd,
c.type_desc,
b.month_desc month
FROM table1 a,
table2 b,
table3 c
WHERE b.columnB = a.columnA(+)
AND c.type_cd = a.type_cd(+)
Mais lors de l'exécution de cette Oracle nous obtenons une erreur
"a table must be outer joined to at most one other table"
quelle est la meilleure façon de résoudre ce problème et de garder la même logique que le serveur SQL?
si * = et LEFT JOIN font la même chose, alors je vais aller à LEFT JOIN. C'est pourquoi je déteste les annotations dans la programmation aussi. merci – Omnipresent
En fait, je ne pense pas que cela fasse la même chose que la requête originale: l'original était une jointure gauche de b à a, et simultanément de c à a, ce qui explique pourquoi Oracle s'est plaint. La requête réécrite est une jointure gauche de a à b et a à c, qui aurait été = * au lieu de * = dans la requête d'origine. –
alors comment devrait-il être écrit en oracle? – Omnipresent