107 votes

Que signifie un signe (+) dans une clause WHERE d'Oracle SQL?

Possible Duplicate:
Oracle: Que fait (+) dans une clause WHERE ?

Considérez la requête SQL simplifiée ci-dessous, dans un environnement de base de données Oracle (bien que je ne sois pas sûr que ce soit spécifique à Oracle) :

SELECT 
   t0.foo, t1.bar
FROM
   FIRST_TABLE t0, SECOND_TABLE t1
WHERE
   t0.ID (+) = t1.ID;

À quoi sert cette notation (+) dans la clause WHERE ? Je suis désolé si c'est une question naïve de débutant, mais il a été extrêmement difficile à rechercher sur Google ou StackOverflow... car même en utilisant des guillemets, les moteurs de recherche voient un signe '+' et semblent vouloir le traiter comme une sorte de directive logique.

89voto

Benoit Points 35553

Ceci est une notation spécifique à Oracle pour une jointure externe. Cela signifie qu'elle inclura toutes les lignes de t1, et utilisera des NULL dans les colonnes de t0 s'il n'y a pas de ligne correspondante dans t0.

En SQL standard, on écrirait :

SELECT t0.foo, t1.bar
  FROM FIRST_TABLE t0
 RIGHT OUTER JOIN SECOND_TABLE t1;

Oracle recommande de ne plus utiliser ces jointures si votre version prend en charge les jointures ANSI (LEFT/RIGHT JOIN) :

Oracle recommande d'utiliser la syntaxe de jointure OUTER JOIN dans la clause FROM plutôt que l'opérateur de jointure Oracle. Les requêtes de jointure externe qui utilisent l'opérateur de jointure Oracle (+) sont soumises aux règles et restrictions suivantes [...]

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X