Bonjour je me fais jeter par ma DB (en l'occurence pggsql) car on ne peu pas exprimer une jointure gauche d'une table t1 sur les tables t2,t3, t4 et ensuite poser une autre jointure gauche (ou full) de de t3 sur t5.

Dans le cas qui m'occupe ça donne :
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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
SELECT 
collaborateurs.col_id,
collaborateurs.col_matricule,
collaborateurs.col_nom,
collaborateurs.col_prenom,
collaborateurs.col_dt_entree, 
collaborateurs.col_qual,
collaborateurs.col_formation,
collaborateurs.ser_id, 
collaborateurs.ag_id,
collaborateurs.col_typeimport, 
collaborateurs.col_dt_naiss, 
collaborateurs.col_int_ext, 
collaborateurs.col_sexe, 
collaborateurs.col_nomabrege, 
collaborateurs.col_diplome, 
collaborateurs.col_pr_semicomplet,
collaborateurs.col_pr_complet,
metiers.met_id,
metiers.met_lib,
li_col_fct.fct_id,
fonction.fct_lib, 
ct.ct_id, 
ct.ct_lib, 
lmtc.ct_valide,
tc.typ_id, 
tc.typ_lib, 
lccf.notfct_val,
service.ser_lib
FROM
collaborateurs  LEFT   OUTER JOIN li_col_met ON (collaborateurs.col_id = li_col_met.col_id)
LEFT  OUTER JOIN li_col_fct  ON (collaborateurs.col_id = li_col_fct.col_id)
LEFT   OUTER JOIN service  ON (collaborateurs.ser_id = service.ser_id),
competences_tech ct, 
type_ct tc,
li_col_ct_fct lccf,
li_col_met LEFT  OUTER JOIN metiers ON (li_col_met.met_id = metiers.met_id),
li_col_fct LEFT  OUTER JOIN fonction  ON (li_col_fct.fct_id = fonction.fct_id),
li_met_typ_ct lmtc
D'un point de vue logique, cela donne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
SELECT 
(...)
FROM
t1  FULL   OUTER JOIN t2 ON (...)
LEFT  OUTER JOIN t3  ON (...)
LEFT   OUTER JOIN t4  ON (...),
t5, 
t6,
t7,
t2 LEFT  OUTER JOIN t8 ON (...),
t3 LEFT   OUTER JOIN t9  ON (...),
t10;
Comment, puis-je d'un point de vue logique pallier à ce problème ?