Oraclei : LEFT JOIN et conditions
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 ;-)
Re: Oraclei : LEFT JOIN et conditions
Citation:
Envoyé par alexadvance
Cela fonctionne très bien dans le cas simple du style :
Code:
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 :
Code:
SELECT A.FIELD1 FROM TABLE1 A, TABLE2 B WHERE A.FIELD1(+)=B.FIELD2 AND A.FIELD4 = 1
Heu y'a pas une erreur sur la jointure ?
Pour moi (du moins en mysql), le LEFT JOIN : C'est la table qui suit qui peut ne pas avoir de données (table2), c'est comme les (+)
Dans ce cas c'est
Code:
1 2 3 4 5
| SELECT A.FIELD1
FROM TABLE1 A ,TABLE2 B
WHERE A.FIELD1 = B.FIELD2 (+)
AND B.FIELD3 (+)='TEST'
AND A.FIELD4 = 1; |