Bonjour,

je cherche à écrire une requête SQL Oracle (version 7) et je dois faire plusieurs jointures externes sur une même table
j'ai 4 tables principales (en bleu) et des tables 'thesaurus' (en orange)
c'est ce que je fais généralement sur Access sans problème mais la requête ci-dessous est tellement lente à s'exécuter que je souhaite l'exécuter sous oracle pour gagner en performance
mais j'ai une erreur
ORA-01417: une table peut être de jointure externe pour une autre table au moins
comment puis-écrire cette requête ?
d'avance merci

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
SELECT A.ND_N_IDPATIENT,A.IE_N_INDICATIONS,B.PE_M_HIST_MALADIE,B.PE_M_TRAITEMENT_JOUR,B.PE_M_COMMENT_REPOS FROM (
SELECT UNIQUE
concatenat(EFFORT.TABEFFORT_VENUE.EFFORT_ID) AS IE_N_INDICATIONS,
EFFORT.TABNUMERO_DOSSIER.ND_N_IDPATIENT,
EFFORT.TABNUMERO_DOSSIER.ND_T_NUM_DOSSIER,
EFFORT.TABNUMERO_DOSSIER.ND_T_NOM,
EFFORT.TABNUMERO_DOSSIER.ND_T_PRENOM,
EFFORT.TABNUMERO_DOSSIER.ND_N_SEXE, 
EFFORT.TABNUMERO_DOSSIER.ND_D_DATE_NAISS,
EFFORT.TABNUMERO_DOSSIER.ND_T_IPUM,
EFFORT.TABEFFORT_VENUE.EFFORT_ID,
EFFORT.TABEFFORT_VENUE.E_N_IDVENUE,
EFFORT.TABEFFORT_VENUE.E_D_DATE_EPREUVE,
EFFORT.TABEFFORT_VENUE.E_N_NUM_EPREUVE,
EFFORT.TABPREALABLE_EFFORT.PE_N_HEURE,
EFFORT.TABPREALABLE_EFFORT.PE_N_DEMANDEUR,
EFFORT.TABPREALABLE_EFFORT.PE_N_HOSPI,
EFFORT.TABPREALABLE_EFFORT.PE_N_PRAT_HOSPITALIER,
EFFORT.TABPREALABLE_EFFORT.PE_N_PRAT_ATTACHE,
EFFORT.TABINDICATION_EFFORT.IE_T_AUTRES_INDICATIONS,
EFFORT.TABPREALABLE_EFFORT.PE_N_AGE,
EFFORT.TABPREALABLE_EFFORT.PE_N_POIDS,
EFFORT.TABPREALABLE_EFFORT.PE_N_TAILLE,
EFFORT.TABPREALABLE_EFFORT.PE_N_INFIRMIERE,
EFFORT.TABPREALABLE_EFFORT.PE_N_PROTOCOLE,
EFFORT.TABPREALABLE_EFFORT.PE_N_SALLE,
EFFORT.TABPREALABLE_EFFORT.PE_B_TNT,
EFFORT.TABPREALABLE_EFFORT.PE_B_THALLIUM,
EFFORT.TABPREALABLE_EFFORT.PE_B_VO2,
EFFORT.TABPREALABLE_EFFORT.PE_N_FREQ_REPOS,
EFFORT.TABPREALABLE_EFFORT.PE_N_TAS_REPOS,
EFFORT.TABPREALABLE_EFFORT.PE_N_TAD_REPOS,
EFFORT.TABPREALABLE_EFFORT.PE_N_EPREUVES_ABRUTE,
EFFORT.TABPREALABLE_EFFORT.PE_N_PALIER_DEBUT
FROM 
EFFORT.TABNUMERO_DOSSIER,
EFFORT.TABEFFORT_VENUE,
EFFORT.TABPREALABLE_EFFORT,
EFFORT.TABINDICATION_EFFORT,
EFFORT.TABINDICATIONS_LIBELLE,
EFFORT.TABMEDECINS,
EFFORT.TABHOSPITALISATION,
EFFORT.TABPRATICIENS_HOSPI,
EFFORT.TABPRATICIENS_ATTAC,
EFFORT.TABINFIRMIERES,
EFFORT.TABTYPE_PROTOC,
EFFORT.TABEFFORT_SALLES,
EFFORT.TABEPREUVES_ABRUP 
WHERE 
EFFORT.TABNUMERO_DOSSIER.ND_N_IDPATIENT(+)=EFFORT.TABEFFORT_VENUE.E_N_IDPATIENT AND
EFFORT.TABEFFORT_VENUE.EFFORT_ID(+)=EFFORT.TABPREALABLE_EFFORT.EFFORT_ID AND 
EFFORT.TABPREALABLE_EFFORT.EFFORT_ID(+)=EFFORT.TABINDICATION_EFFORT.EFFORT_ID AND 
EFFORT.TABINDICATION_EFFORT.IE_N_INDICATIONS(+)=EFFORT.TABINDICATIONS_LIBELLE.N_CODE AND 
EFFORT.TABPREALABLE_EFFORT.PE_N_DEMANDEUR(+)=EFFORT.TABMEDECINS.N_CODE AND 
EFFORT.TABPREALABLE_EFFORT.PE_N_HOSPI(+)=EFFORT.TABHOSPITALISATION.N_CODE AND 
EFFORT.TABPREALABLE_EFFORT.PE_N_PRAT_HOSPITALIER(+)=EFFORT.TABPRATICIENS_HOSPI.N_CODE AND 
EFFORT.TABPREALABLE_EFFORT.PE_N_PRAT_ATTACHE(+)=EFFORT.TABPRATICIENS_ATTAC.N_CODE AND 
EFFORT.TABPREALABLE_EFFORT.PE_N_INFIRMIERE(+)=EFFORT.TABINFIRMIERES.N_CODE AND 
EFFORT.TABPREALABLE_EFFORT.PE_N_PROTOCOLE(+)=EFFORT.TABTYPE_PROTOC.N_CODE AND 
EFFORT.TABPREALABLE_EFFORT.PE_N_SALLE(+)=EFFORT.TABEFFORT_SALLES.N_CODE AND 
EFFORT.TABPREALABLE_EFFORT.PE_N_EPREUVES_ABRUTE(+)=EFFORT.TABEPREUVES_ABRUP.N_CODE) A,EFFORT.TABPREALABLE_EFFORT B 
WHERE A.EFFORT_ID(+)=B.EFFORT_ID AND A.ND_N_IDPATIENT=3290263;