Bonjour,

Malgré le titre de cette discussion, je n'ai pas voulu rentrer dans celle de dam28800
car elle est assez spécifique.

J’ai une question bête :

Avec une requête comme

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
SELECT TJ1.COL1, TJ1.COL2
       FROM   TEST_JOIN1 TJ1
              LEFT OUTER JOIN TEST_JOIN2 TJ2
                 ON TJ1.COL1 = TJ2.COL1 AND TJ1.COL2 = 'AA'
On recherche toutes les valeurs satisfaisant la condition de jointure précisée dans prédicat, puis on rajoute toutes les lignes de la table TJ1 (gauche) qui n'ont pas été prises en compte au titre de la satisfaction du critère.

S’il n’y a rien d’autre : pas de clause WHERE, pas de ORDER
Avec récupération de colonnes QUE sur la table de gauche

Et si j’ai bien compris
Cela revient au même d’attaquer directement TJ1 car on récupère TOUT TJ1
(enfin pour les colonnes sélectionnées)

Je me trompe ?
Sinon, en dehors du WHERE y a-t-il d’autres cas où ne récupère pas TOUT TJ1 ?


Pour info voici ce que rend la requête suivante

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
SELECT TJ1.COL1, TJ1.COL2, TJ2.COL1, TJ2.COL2
       FROM   TEST_JOIN1 TJ1
              LEFT OUTER JOIN TEST_JOIN2 TJ2
                   ON TJ1.COL1 = TJ2.COL1 AND TJ1.COL2 = 'AA'
 
            COL1        COL2 COL1        COL2 
            ----------- ---- ----------- ---- 
            101         AA     101           AA
            102         AA     102           AA
            103         BB     NULL          NULL