Ta seconde requête est fausse :
SELECT MIN (TempsRealise) FROM TEMPS GROUP BY NumeroEtape
Va te renvoyer tous les temps minimum de chaque étape, exemple
=> 10, 15, 10
1 2 3 4
| SELECT TempsRealise FROM PAYS, COUREURS, TEMPS
WHERE PAYS.NomPays = 'Espagne'
AND PAYS.CodePays = COUREURS.CodePays
AND COUREURS.NumeroCoureur = TEMPS.NumeroCoureur); |
Va te renvoyer les temps de tous les coureurs Espagnols sur toutes les courses
=> donc tu peux avoir pour la course 1 un temps minimum de 10, et un coureur espagnol qui a fait 15.
L'intersect va être ok, alors que c'est pas bon.
La technique est bien trouvée, mais il faut que tu rajoutes le n° étape dans ton intersect
1 2 3 4 5 6 7
| SELECT COUNT (*) FROM (
SELECT NumeroEtape, MIN (TempsRealise) FROM TEMPS GROUP BY NumeroEtape
INTERSECT
SELECT NumeroEtape, TempsRealise FROM PAYS, COUREURS, TEMPS
WHERE PAYS.NomPays = 'Espagne'
AND PAYS.CodePays = COUREURS.CodePays
AND COUREURS.NumeroCoureur = TEMPS.NumeroCoureur); |
Partager