Bonjour,
Je viens du monde Oracle,
sous Oracle pour faire une jointure externe j'utilise la syntaxe avec (+).
Le truc est que cette syntaxe est propore à Oracle et ne fonctionne pas sous Sqlserver.
J'utilise la syntaxe ANSI mais le résultat obtenu ne me parait pas correct.
Je vous explique mon cas,
J'ai une table de référence qui contient une liste de client.
Je dispose d'une table annexe qui contient ses mêmes clients et d'autres.
CLIENT_REF
ID NOM TEL
1 Intel 09090909
2 AOL 08080808
3 IBM 07070707CLIENT_AN
ID NOM REF STATUT TEL
1 Intel C1 V 09090909
1 Intel C1 NV 09090909
1 Intel R1 V 90909
1 Intel V1 V 90909
2 AOL C1 V 0707078
2 AOL R1 V 0707079
2 AOL R1 NV 0707
2 AOL R2 V 0707076
3 IBM C1 V 0167678
3 IBM V1 V 0167677
3 IBM F4 V 016767
En faite ce que je souhaite c'est avoir sur une même ligne pour chaque ID de la table CLIENT_REF,
la liste des différentes annexes de REF C1 et R1 valide existantes.
Comme ceci par exemple :
J'ai écris cette requête :ID NOM TEL NOM_C1 REF_C1 STATUT_C1 TEL_C1 NOM_R1 REF_R1 STATUT_R1 TEL_R1
1 Intel 09090909 Intel C1 V 09090909 Intel R1 V 90909
2 AOL 08080808 AOL C1 V 0707078 AOL R1 V 0707079
3 IBM 07070707 C1 V 0167678 NULL NULL NULL NULL
Le problème est que sous Sqlserver, il manque une ligne.
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 SELECT CR.ID, CR.NOM, CR.TEL, CAC.NOM_C1, CAC.REF_C1, CAC.STATUT_C1, CAC.TEL_C1, CAR.NOM_R1, CAR.REF_R1, CAR.STATUT_R1, CAR.TEL_R1 FROM CLIENT_REF CR left outer join CLIENT_AN CAC on CR.ID=CAC.ID left outer join CLIENT_AN CAR on CR.ID=CAR.ID WHERE CAC.REF='C1' and CAC.STATUT='V' and CAR.REF='R1' and CAR.STATUT='V'
J'ai ceci :
au lieu de cela :ID NOM TEL NOM_C1 REF_C1 STATUT_C1 TEL_C1 NOM_R1 REF_R1 STATUT_R1 TEL_R1
1 Intel 09090909 Intel C1 V 09090909 Intel R1 V 90909
2 AOL 08080808 AOL C1 V 0707078 AOL R1 V 0707079
Je comprends pas.ID NOM TEL NOM_C1 REF_C1 STATUT_C1 TEL_C1 NOM_R1 REF_R1 STATUT_R1 TEL_R1
1 Intel 09090909 Intel C1 V 09090909 Intel R1 V 90909
2 AOL 08080808 AOL C1 V 0707078 AOL R1 V 0707079
3 IBM 07070707 C1 V 0167678 NULL NULL NULL NULL
Merci à tous
Partager