Opérateur (+) = et jointure interne
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:
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:
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:
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 ?