Sous Oracle 8i, la syntaxe LEFT JOIN n'existe pas (dispo à partir de oracle 9), on doit utiliser la jointure de type (+)= .
Cela fonctionne très bien dans le cas simple du style :
SELECT A.FIELD1 FROM TABLE1 A LEFT JOIN TABLE2 B ON A.FIELD1=B.FIELD2 WHERE A.FIELD4 = 1;
sera très bien traduit par :
SELECT A.FIELD1 FROM TABLE1 A , TABLE2 B WHERE A.FIELD1(+)=B.FIELD2 AND A.FIELD4 = 1;
mais dans le cas où j'ai besoin d'un critère de jointure, je ne sais pas comment faire :
SELECT A.FIELD1 FROM TABLE1 A LEFT JOIN TABLE2 B ON A.FIELD1=B.FIELD2 AND B.FIELD3='TEST' WHERE A.FIELD4 = 1;
parceque la syntaxe suivante :
SELECT A.FIELD1 FROM TABLE1 A ,TABLE2 B WHERE A.FIELD1(+)=B.FIELD2 AND B.FIELD3='TEST' AND A.FIELD4 = 1;
ne peut pas fonctionner correctement car le B.FIELD3='TEST' s'execute sur le résultat de la jointure et non sur la table jointe...
Si quelqu'un connait la bonne syntaxe, il est le bienvenue ;-)
Partager