Soient T1 et T2
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 CREATE TABLE TT1 ( ID_TT1 VARCHAR2(1 CHAR), DATA_TT1 VARCHAR2(2 CHAR) )contenant respectivement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 CREATE TABLE CMC.TT2 ( FK_TT1 VARCHAR2(1 CHAR), DATA_TT2 VARCHAR2(2 CHAR) )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 ID_TT1,DATA_TT1 a,a1 b,b1 c,c1 ,n1 a,a2 b,b2 c,c2 ,n2 ,n3 ,n4Pouvez-vous me dire pourquoi ne me retourne pas le résultat escompté (c'est-à-dire également le matching pour les records de TT1 ayant une valeur null dans ID_TT1) ? Le résultat est plus bas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 FK_TT1,DATA_TT2 a,aa b,bb c,cc ,nn
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT * FROM TT1 JOIN TT2 ON TT1.ID_TT1 = TT2.FK_TT1;Par contre, j'obtiens le résultat souhaité en précisant la clause 'on' :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 ID_TT1,DATA_TT1,FK_TT1,DATA_TT2 a,a1,a,aa b,b1,b,bb c,c1,c,cc a,a2,a,aa b,b2,b,bb c,c2,c,cc
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT * FROM TT1 JOIN TT2 ON ( (TT1.ID_TT1 = TT2.FK_TT1) OR ( (TT1.ID_TT1 is null) and (TT2.FK_TT1 is null))) ;Je sais bien que la démarche peut sembler étrange, mais j'ai besoin de comprendre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 ID_TT1,DATA_TT1,FK_TT1,DATA_TT2 a,a1,a,aa a,a2,a,aa b,b1,b,bb b,b2,b,bb c,c1,c,cc c,c2,c,cc ,n1,,nn ,n2,,nn ,n3,,nn
D'avance, je vous remercie.
Brolon, qui va sans doute se faire reprendre de volée![]()
Partager