[PL/SQL] le rôle exact du (+) dans une clause

Fermé
mathanz Messages postés 1 Date d'inscription mercredi 6 juin 2007 Statut Membre Dernière intervention 6 juin 2007 - 6 juin 2007 à 11:51
 mathanz - 7 juin 2007 à 12:36
Bonjour,
quelqu'un pourrait m'expliquer précisémment le role du "(+)" dans la requete suivante svp ?

select * from table1 t, table2 t2 where
t.t1 = 'toto' AND
t.t2 > 3 AND
t.t4(+) = t2.t1

Merci !

2 réponses

jee pee Messages postés 39718 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 14 mai 2024 9 272
6 juin 2007 à 12:16
Bonjour,

Cette syntaxe est utilisée pour prendre en compte dans le resultat les lignes où le champ t.t4 n'est pas renseigné (positionné à null). Ces lignes sont donc ajoutées au resultat en plus de celles qui repondent à la condition.

C'est ce qui s'appelle une Jointure externe :

Lorsqu'une ligne d'une table figurant dans une jointure n'a pas de correspondant dans les autres tables, elle ne satisfait pas au critère d'équi-jointure et donc ne figure pas dans le résultat de la jointure.
Une option permet de faire figurer dans le résultat les lignes satisfaisant la condition d'équi-jointure plus celles n'ayant pas de correspondant. Cette option s'obtient en accolant (+) au nom de colonne de la table dans laquelle manquent des éléments, dans la condition d'équi-jointure.

cdt
26