Bonjour,
je souhaite optimiser la requête suivante:
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
select distinct p.NIP,/* VARCHAR2 */
p.NOM,/* VARCHAR2*/ 
p.PRENOM,/* VARCHAR2 */
sj.DATE_ENT,/* NUMBER */
q3.NIQ,/* NUMBER */
q3.LIBABR, /* VARCHAR2 */
NULL,
q3.TYPEQ /* NUMBER */
from PENSOINS.BM_LIB_S lib2,
PENSOINS.C_QUESTION q3,
PENSOINS.PATIENT p,
PENSOINS.SEJOUR sj,
PENSOINS.BM_TH_S th
where lib2.NITH = th.NITH
and lib2.PARENTE like '674,%'
and p.NIPATIENT = sj.NIPATIENT 
and sj.NISEJOUR = th.NISEJOUR
and th.NIQUEST = q3.NIQUEST
and (q3.LIBABR like 'IDENTITE%'
or q3.LIBABR like 'Tabac'
or q3.LIBABR like 'Protocole de recherche%'
or q3.LIBABR like 'Adéquation de la prescription%'
or q3.LIBABR like 'Pathologie respiratoire'
or q3.LIBABR like 'Pathologie extra-pulmonaire'
or q3.LIBABR like 'Antécédents%'
or q3.LIBABR like 'Traitement médicamenteux%'
or q3.LIBABR like 'SIGNES FONCTIONNELS%'
or q3.LIBABR like 'Toux - Expectoration%'
or q3.LIBABR like 'Dyspnée%'
or q3.LIBABR like 'Score qualité de vie : SF-36%'
or q3.LIBABR like 'SPIRO-RESIS VA%'
or q3.LIBABR like 'Conclusion EFR%')
UNION 
SELECT distinct p.NIP, /* VARCHAR2 */
p.NOM, /* VARCHAR2*/ 
p.PRENOM, /* VARCHAR2 */
sj.DATE_ENT, /* NUMBER */
8341.5,/* NUMBER */
'fumeur', /* VARCHAR2 */
NULL,
0/* NUMBER */
FROM PENSOINS.BM_LIB_S lib2,
PENSOINS.C_QUESTION q3,
PENSOINS.PATIENT p,
PENSOINS.SEJOUR sj,
PENSOINS.BM_TH_S th
where lib2.NITH = th.NITH
and lib2.PARENTE like '674,%'
and p.NIPATIENT = sj.NIPATIENT 
and sj.NISEJOUR = th.NISEJOUR
and th.NIQUEST = q3.NIQUEST
UNION 
SELECT distinct p.NIP, /* VARCHAR2 */
p.NOM, /* VARCHAR2*/ 
p.PRENOM, /* VARCHAR2 */
sj.DATE_ENT, /* NUMBER */
8342.5,/* NUMBER */
'fumeur de cigarettes', /* VARCHAR2 */
NULL,
0/* NUMBER */
FROM PENSOINS.BM_LIB_S lib2,
PENSOINS.C_QUESTION q3,
PENSOINS.PATIENT p,
PENSOINS.SEJOUR sj,
PENSOINS.BM_TH_S th
where lib2.NITH = th.NITH
and lib2.PARENTE like '674,%'
and p.NIPATIENT = sj.NIPATIENT 
and sj.NISEJOUR = th.NISEJOUR
and th.NIQUEST = q3.NIQUEST
comme vous pouvez constatez, je suis obligé de faire autant de duplication que d'Union, vous imaginez donc ma requête après 10 unions !!

j'ai essayé d'utiliser DUAL mais apparemment ça marche pas quand il y'a des jointures!!

quecun aurai une idée de comment faire dans ce cas.

je veous remercie d'vance pour votre aide.