Déso, j'ai supprimer mon message pour le modifié :
Salut,
Bon c'est pas tres dur.
Désolé j'ai pas reproduis tes tables, j'ai été au plus simple :
Moi j'ai 2 tables comme ça :
COUREUR:
ID_COUREUR
NOM
TEMPS:
ID_TEMPS
TEMPS
ID_COUREUR
Mes données sont les suivantes :
ID_COUREUR NOM
1 ERIC
2 FABRICE
3 JULIEN
ID_TEMPS TEMPS ID_COUREUR
1 00:24:48 1
2 00:24:52 2
3 00:24:52 3
Donc le résultat attendu c'est celui-ci :
PARTICIPANT TEMPS ECART
ERIC 00:24:48 00:00:00
FABRICE 00:24:52 00:00:04
JULIEN 00:24:52 00:00:04
Bon la première étape c'est isolé le temps le plus rapide:
SELECT MIN(TEMPS) as TEMPS_FIRST FROM dbo.temps
On a :
TEMPS_FIRST
00:24:48
Maintenant on va créer un produit cartésien pour rajouter tous les participants à cette table, et que à chaque fois le TEMPS_FIRST se repete pour pas perdre l'info :
SELECT TEMPS_FIRST, TEMPS, PARTICIPANT
FROM (
SELECT MIN(TEMPS) as TEMPS_FIRST FROM dbo.temps) A,
(
SELECT NOM as PARTICIPANT, TEMPS FROM dbo.coureur A
LEFT JOIN dbo.temps B ON A.ID_COUREUR = B.ID_COUREUR) B
Enfait, j'ai créé une nouvelle requête, qui se base sur une sous requête (la première), à laquelle je rajoute une nouvelle sous requête pour créer le produit cartésien, ce qui me donne ça :
TEMPS_FIRST TEMPS PARTICIPANT
00:24:48 00:24:48 ERIC
00:24:48 00:24:52 FABRICE
00:24:48 00:24:52 JULIEN
Bon maintenant c'est plus trop dur, t'as juste à faire l'opération suivante dans ton select : TEMPS - TEMPS_FIRST, que tu peux cast en TIME pour que ça reste au format 00:00:00
SELECT PARTICIPANT, TEMPS, CAST(TEMPS-TEMPS_FIRST as TIME) as ECART FROM (
SELECT MIN(TEMPS) as TEMPS_FIRST FROM dbo.temps) A,
(
SELECT NOM as PARTICIPANT, TEMPS FROM dbo.coureur A
LEFT JOIN dbo.temps B ON A.ID_COUREUR = B.ID_COUREUR) B
ORDER BY TEMPS
Voila cette requête donne le résultat souhaité
PARTICIPANT TEMPS ECART
ERIC 00:24:48 00:00:00
FABRICE 00:24:52 00:00:04
JULIEN 00:24:52 00:00:04