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:
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)
Mais cette requête me donne pas les lignes qui n'existent pas dans table B!

On m'a parlé de l'opérateur (+), j'ai donc modifié ma requête comme ci-dessous:
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)
Mais c'est sans succès!

Pouvez-vous m'aider? Je vous remercie d'avance.