Bonjour,

Je dois reprendre des requêtes Oracle et les passer en SQL normalisé.
Cela fait bien longtemps que je n'ai pas pratiqué les opérateurs hors norme d'Oracle.
J'ai retrouvé ces règles de base :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
select    *
from    TMP_A    A
    ,    TMP_B    B
where    A.CLE = B.CLE
;
/* équivaut à */
select    *
from    TMP_A    A
    inner join
        TMP_B    B
        on    A.CLE = B.CLE
;
 
select    *
from    TMP_A    A
    ,    TMP_B    B
where    A.CLE (+) = B.CLE
;
/* équivaut à */
select    *
from    TMP_A    A
    right join
        TMP_B    B
        on    A.CLE = B.CLE
;
 
select    *
from    TMP_A    A
    ,    TMP_B    B
where    A.CLE = B.CLE (+)
;
/* équivaut à */
select    *
from    TMP_A    A
    left join
        TMP_B    B
        on    A.CLE = B.CLE
;
Je suppose que :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
select    *
from    TMP_A    A
    ,    TMP_B    B
where    A.CLE (+) = B.CLE
    and    A.VAL (+) = 'X'
;
/* équivaut à */
select    *
from    TMP_A    A
    right join
        TMP_B    B
        on    A.CLE = B.CLE
        and    A.VAL = 'X'
;
Mais je me trouve face à ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
select    *
from    TMP_A    A
    ,    TMP_B    B
where    A.CLE = B.CLE
    and    A.VAL (+) = 'X'
;
Comment l'écririez vous avec jointure normalisée ?