Bonjour,
J'ai cette requête pour le moins complexe.
Je précise que la table t8 est une table de nomenclature qui ne nécessite pas de date.
Pour le reste, voici ma question :
Si j'ai cet ordre (inner join d'abord, puis left outer simple, puis left outer imbriqué), la requete me renvoie ce que j'attends.
Si je ne place pas en dernier le left outer imbriqué, curieusement, la requête filtre bien plus et me renvoie moins de tuples !
Pourquoi l'ordre a-t-il de l'importance ? Est-ce dû à l'algorithme mysql ou bien ma requête est-elle tout à fait mal construite ?
Merci d'avance de vos lumières...
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
40 SELECT blablabla from t1 inner join t2 on( t1.machin=t2.machin ) inner join t3 on( t1.truc=t3.truc ) left outer join t4 on ( t1.bidule=t4.bidule and t4.debut <= "2012-12-31" and t4.fin >= "2012-01-01" ) left outer join t5 on ( t1.toto=t5.toto and t5.debut <= "2012-12-31" and t5.fin >= "2012-01-01" ) left outer join t6 left outer join t7 left outer join t8 on ( t7.tata=t8.tata ) on ( t6.titi=t7.titi and t6.zaza=t7.zaza and t7.debut <= "2012-12-31" and t7.fin >= "2012-01-01" ) on ( t1.zozo=t6.zozo and t6.debut <= "2012-12-31" and t6.fin >= "2012-01-01" ) where t1.debut <= "2012-12-31" and t1.fin >= "2012-01-01" and t2.debut <= "2012-12-31" and t2.fin >= "2012-01-01" and t3.debut <= "2012-12-31" and t3.fin >= "2012-01-01"
Partager