Bonjour,
J'ai au cour de mon stage a optimiser une base de donnée access et j'ai pas mal avancé cependant une requête me pose problème :
au début j'avai trouvé cette solution
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
SELECT YEAR(Now()) - YEAR(patient.dtenaiss) AS age,
       patient.sexepat,
       patient.idpat,
       episode_poe.dteexp,
       episode_poe.vcc,
       episode_poe.rmqepi,
       episode_poe.lechage2,
       episode_poe.griffmors,
       episode_poe.motifarr,
       episode_poe.dtecs1,
       ville.cp,
       episode_animal.aniesp,
       episode_animal.statvcc,
       pays.nompays
FROM   patient,
       episode_poe,
       ville,
       dept,
       adresse,
       pays,
       episode_animal
WHERE  ( ( ( patient.idpat ) = episode_poe.idpat )
         AND ( ( YEAR(episode_poe.dtecs1) ) = [annee] )
         AND ( ( dept.iddept ) = ville.dept )
         AND ( ( ville.idville ) = adresse.idville )
         AND ( ( adresse.idad ) = patient.idadpat )
         AND ( ( pays.idpays ) = dept.idpays )
         AND ( ( episode_poe.idepi ) = episode_animal.idepi ) );
mais en avancant dans le travail je me suis rendu compte qu'il me manquerais les patient dont le pays n'es pas renseigné don j'ai pensé faire un outer join . et comme access ne le permet pas voila ce que j'ai fait :
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
SELECT YEAR(Now()) - YEAR(patient.dtenaiss) AS age,
       patient.sexepat,
       patient.idpat,
       episode_poe.dteexp,
       episode_poe.vcc,
       episode_poe.rmqepi,
       episode_poe.lechage2,
       episode_poe.griffmors,
       episode_poe.motifarr,
       episode_poe.dtecs1,
       ville.cp,
       episode_animal.aniesp,
       episode_animal.statvcc,
       pays.nompays
FROM   patient,
       episode_poe,
       ville,
       dept,
       adresse,
       pays
WHERE  ( ( ( patient.idpat ) = episode_poe.idpat )
         AND ( ( YEAR(episode_poe.dtecs1) ) = [annee] )
         AND ( ( dept.iddept ) = ville.dept )
         AND ( ( ville.idville ) = adresse.idville )
         AND ( ( adresse.idad ) = patient.idadpat )
         AND ( ( pays.idpays ) = dept.idpays )
LEFT OUTER JOIN episode_animal ON ( episode_poe.idepi ) = episode_animal.idepi )  
 
UNION 
 
SELECT YEAR(Now()) - YEAR(patient.dtenaiss) AS age,
       patient.sexepat,
       patient.idpat,
       episode_poe.dteexp,
       episode_poe.vcc,
       episode_poe.rmqepi,
       episode_poe.lechage2,
       episode_poe.griffmors,
       episode_poe.motifarr,
       episode_poe.dtecs1,
       ville.cp,
       episode_animal.aniesp,
       episode_animal.statvcc,
       pays.nompays
FROM   patient,
       ville,
       dept,
       adresse,
       pays,
       episode_animal
 
WHERE  ( ( ( patient.idpat ) = episode_poe.idpat )
         AND ( ( YEAR(episode_poe.dtecs1) ) = [annee] )
         AND ( ( dept.iddept ) = ville.dept )
         AND ( ( ville.idville ) = adresse.idville )
         AND ( ( adresse.idad ) = patient.idadpat )
         AND ( ( pays.idpays ) = dept.idpays )
         AND ( ( episode_poe.idepi ) = episode_animal.idepi ) )
LEFT OUTER JOIN episode_poe.idepi
ON ( episode_poe.idepi ) = episode_animal.idepi )  ;
mais impossible de compiler ( erreur de syntaxe dans la requete union ) qu'en pensez vous ?