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
| SELECT PRS.nom, PRS.prenom, MIS.idMission, MIS.villeDepart, MIS.villeArrivee
FROM PERSONNEL as PRS
LEFT OUTER JOIN VOL
ON VOL.idPilote = PRS.idPersonnel
INNER JOIN MISSION as MIS
ON MIS.idMission = VOL.idMission
-- elimination des pilotes ayant volé au départ ou à destination d'Annecy
WHERE NOT EXISTS
(SELECT 1 FROM VOL as VOL1
WHERE SUBQ.idPilote = PRS.idPersonnel
AND ( VOL1.villeDepart COLLATE French_CI_AI = 'ANNECY'
OR VOL1.villeArrivee COLLATE French_CI_AI = 'ANNECY')
)
-- elimination des pilotes ayant fait escale à Annecy
AND NOT EXISTS
(SELECT 1 FROM ESCALE as ESC2
INNER JOIN MISSION as MIS2
ON MIS2.idMission = ESC2.idMission
INNER JOIN VOL as VOL2
ON VOL2.idMission = ESC2.idMission
WHERE VOL2.idPilote = PRS.idPersonnel
AND ESC2.ville COLLATE French_CI_AI ='ANNECY'
)
UNION ALL
SELECT PRS.nom, PRS.prenom, NULL, NULL, NULL
FROM PERSONNEL as PRS
WHERE FONCTION = 'Pilote' --> ou autre chose !!!
EXCEPT
SELECT PRS.nom, PRS.prenom, NULL, NULL, NULL
FROM PERSONNEL as PRS
INNER JOIN VOL
ON VOL.idPilote = PRS.idPersonnel
WHERE FONCTION = 'Pilote' |
Partager