Bonjour à tous,
Je vous écris parce que j'ai beaucoup de mal à écrire une requête sql. Le but est d'afficher toutes les lignes d'une table. Cependant cette table est liée à d'autres tables. Ce qui fait qu'en faisant une jointure normale je n'ai pas toutes les lignes!
J'explique: je veux afficher toutes les lignes d'une table A avec certains éléments d'une table B.
La table A a comme clef primaire (CL1, CL2, CL3, CL4). Et les champs: CH-A1, CH-A2
La table B a comme clef primaire (CL1, CL2, CL5). Elle a des champs: CH-B1, CH-B2
Une table C a comme clef primaire (CL3, CL4). et un champ CH-C5
Je veux afficher toutes les lignes de A. Même celles qui n'existent pas dans B (avec NULL comme valeur dans les champs de cette table).
Mon select est:
Mais cette requête me donne pas les lignes qui n'existent pas dans table B!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SELECT A.CL1, A.CL2, A.CL3, A.CL4, CH-A1, CH-A2, CH-B1, CH-B2 FROM TABLEA A, TABLEB B WHERE A.CL1 = B.CL1 AND A.CL2 = B.CL2 AND B.CL5 IN (SELECT CH-C5 FROM TABLEC C WHERE A.CL3 = C.CL3 AND A.CL4 = C.CL4)
On m'a parlé de l'opérateur (+), j'ai donc modifié ma requête comme ci-dessous:
Mais c'est sans succès!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SELECT A.CL1, A.CL2, A.CL3, A.CL4, CH-A1, CH-A2, CH-B1, CH-B2 FROM TABLEA A, TABLEB B WHERE A.CL1 = B.CL1 (+) AND A.CL2 = B.CL2 (+) AND B.CL5 IN (SELECT CH-C5 FROM TABLEC C WHERE A.CL3 = C.CL3 AND A.CL4 = C.CL4)
Pouvez-vous m'aider? Je vous remercie d'avance.
Partager