|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : juillet 2005 Messages : 38 ![]() |
Je vous explique:
Je suis en train de mettre en place une base de données qui gère une compétition sportive. j'ai une table "liste des compétiteurs" avec un champs "heure début épreuve", un autre "intervalle entre compétiteur". Tous les 10 compétiteurs, il doit y avoir une pause, mettons 15 minutes. j'aimerai crée une requète avec la liste des compétiteurs leur "horraire départ " en fonction du début de l'épreuve et de l'intervalle et intégrer tout les 10 compétiteurs ma pause de 15 minutes. Est ce possible ? PHIL |
|
|
00
|
|
|
#2 |
|
Membre émérite
![]() Inscription : novembre 2002 Messages : 1 029 ![]() |
il est étonnant de stocker dans une même table ta liste des compétiteurs et des champs "heure début épreuve" + "intervalle entre compétiteur"
Ne devrais-tu pas plutôt avoir une table Compétieurs, une table Compétitions (dans laquelle on trouverait les champs "heure début épreuve" + "intervalle entre compétiteur") et une table qui fait l'association entre les deux par les clés primaires : IdCompétiteur, IdCompétition Bon. A partir de là, me confirmes-tu qu'il y a bien plusieurs compétitions repérables par leur identifiant primaire ? Si oui je suppose que l'intervalle entre chaque participants se calcule à partir du début d'une compétition donné et uniquement pour les participant à cette compétition... Par ailleurs, pour chaque compétition, tous les 10 candidats, on insère 15 minutes... Mais on compte 10 à partir du début d'une compétition, pas du début de l'ensemble des compétition, n'est-ce pas ?
__________________
"Fred point G" Recherche vieux jeux et autres ordis anciens !! (\ _ /) (='.'=) (")-(") |
|
|
00
|
|
|
#3 |
|
Invité régulier
![]() Inscription : juillet 2005 Messages : 38 ![]() |
Exactement, j'ai une table "compétiteurs" et une autre "compétition" avec un identifiant primaire pour chaque épreuve.
Il y a plusieurs compétitions, l'intervalle entre chaque participants se calcule à partir du début d'une compétition donné et uniquement pour les participant à cette compétition. Et enfin, on insère 15 minutes tout les 10 compétiteurs à partir du début de la compétition et non du début de l'emsemble des épreuves, puisque le début de chaques épreuves est différent. voilà pour plus d'infos |
|
|
00
|
|
|
#4 |
![]() ![]() ![]() Christophe Warin Inscription : octobre 2004 Messages : 8 635 ![]() |
Il manque quand même une donnée importante ... Quelle est la durée entre le passage de deux compétiteurs ?
|
|
|
00
|
|
|
#5 |
|
Invité régulier
![]() Inscription : juillet 2005 Messages : 38 ![]() |
Dans mon premier message j'indique qu'il y a un champs "intervalle entre compétiteur" dans la table "compétition".
|
|
|
00
|
|
|
#6 |
![]() ![]() ![]() Christophe Warin Inscription : octobre 2004 Messages : 8 635 ![]() |
Et l'ordre de passage des compétiteurs ? Tu as un moyen de les ordonnés ? Parce que à priori l'heure de passage de chaque compétiteur n'as pas besoin d'être stocké
|
|
|
00
|
|
|
#7 | ||
![]() ![]() ![]() Christophe Warin Inscription : octobre 2004 Messages : 8 635 ![]() |
Citation:
Citation:
La structure idéale serait inspirée de ceci : Compétition(N°Compet, DateCompet,HeureDebut,IntervalleCompetiteur) Participant(N°Participant,Nom, etc) Participer(N°Compet#,N°Participant#,NumOrdrePassage (numAuto)) Le NumOrdrePassage servira uniquement à ordoner les participants pour la compet Ensuite les requêtes seront assez simples, je te laisse dans un premier temps y reflechir |
||
|
|
00
|
|
|
#8 |
|
Invité régulier
![]() Inscription : juillet 2005 Messages : 38 ![]() |
Si bien sur, chaque compétiteur a un dossard, et il doivent partir dans l'ordre de leur dossard. je stocke le champs "dossard" dans la table "compétiteur"
|
|
|
00
|
|
|
#9 | |
![]() ![]() ![]() Christophe Warin Inscription : octobre 2004 Messages : 8 635 ![]() |
Citation:
|
|
|
|
00
|
|
|
#10 |
|
Invité régulier
![]() Inscription : juillet 2005 Messages : 38 ![]() |
Je ne gère qu'une seule compétition, avec plusieurs épreuves de différent niveaux. Lorsque les compétiteurs s'engage auprès de l'organisateur (en l'occurence moi) ils se voient atribuer un dossard qui détermine leur ordre de passage. Le numéro du dossard repart au numéro 1 pour chaque épreuve. J'ai donc un champs Idcompétiteur ("numéro épreuve_numéro dossard") dans ma table compétiteur.
|
|
|
00
|
|
|
#11 |
|
Membre émérite
![]() Inscription : novembre 2002 Messages : 1 029 ![]() |
Moi j'ai écris une requête mais elle ajoute l'intervalle au 15 minutes (tous les 10 candidats.
Par exemple pour un intervalle de 5 minutes, l'attente entre le 10 ° et le 11 ° sera de 15 + 5 minutes = 20 minutes. ça te va ?
__________________
"Fred point G" Recherche vieux jeux et autres ordis anciens !! (\ _ /) (='.'=) (")-(") |
|
|
00
|
|
|
#12 |
![]() ![]() ![]() Christophe Warin Inscription : octobre 2004 Messages : 8 635 ![]() |
ça reviens en fait à mon modèle ... sauf que ce que tu appelles épreuves je l'ai appelé compétition
Donne nous réellement la structure de tes tables ... car si le modèle conceptuel est faux ... tout est faux |
|
|
00
|
|
|
#13 | |
![]() ![]() ![]() Christophe Warin Inscription : octobre 2004 Messages : 8 635 ![]() |
Citation:
|
|
|
|
00
|
|
|
#14 | ||
|
Membre émérite
![]() Inscription : novembre 2002 Messages : 1 029 ![]() |
![]() Je suis trop nul, si tu ne veux pas cumuler l'intervale entre les épruves et la pause il suffit dès le départ de soustraire la valeur de l'intervale à la valeur de la pause... ![]() Bon voici à quoi doit ressembler ta requête : Code :
le champ important est celui-ci : Code :
DateAdd("n",([Compétitions].[Intervalle]*(SELECT Count(*) FROM ListeCompétiteurs AS T WHERE T.IdCompétiteur<ListeCompétiteurs.IdCompétiteur AND T.IdCompétition = ListeCompétiteurs.IdCompétition))+Int((SELECT Count(*) FROM ListeCompétiteurs AS T WHERE T.IdCompétiteur<ListeCompétiteurs.IdCompétiteur AND T.IdCompétition = ListeCompétiteurs.IdCompétition)/10)*15,[Compétitions].[Début]) AS Départ Dans mon exemple, j'ai une table Compétiteurs, une table Compétitions et une table qui fait ListeCompétiteurs qui fait l'association Compétiteurs.IdCompétiteur <-> Compétitions.IdCompétition Si tu as besoin d'explication, demande.
__________________
"Fred point G" Recherche vieux jeux et autres ordis anciens !! (\ _ /) (='.'=) (")-(") |
||
|
|
00
|
|
|
#15 |
![]() ![]() ![]() Christophe Warin Inscription : octobre 2004 Messages : 8 635 ![]() |
Et il est où l'ordre de passage par dossard là dedans
?
|
|
|
00
|
|
|
#16 | ||
|
Membre émérite
![]() Inscription : novembre 2002 Messages : 1 029 ![]() |
Citation:
Enfin très pas dur comme exercice... création du champ + copier coller pour remplacer dans la requête.
__________________
"Fred point G" Recherche vieux jeux et autres ordis anciens !! (\ _ /) (='.'=) (")-(") |
||
|
|
00
|
|
|
#17 | |
|
Invité régulier
![]() Inscription : juillet 2005 Messages : 38 ![]() |
citation:Tofalu à écrit
Citation:
|
|
|
|
00
|
|
|
#18 |
|
Invité régulier
![]() Inscription : juillet 2005 Messages : 38 ![]() |
FRED.G
j'ai essayé ta requète mais elle me donne pour heure de départ l'heure du début pour les 10 premiers et l'heure du début + 15 minutes pour les 10 suivant et ainsi de suite |
|
|
00
|
|
|
#19 | |
|
Membre émérite
![]() Inscription : novembre 2002 Messages : 1 029 ![]() |
Vérifie la valeur de [Compétitions].[Intervalle]
Ce champ ne doit pas afficher 0 mais la durée de chaque épreuve d'une compèt. Sinon, crée un champ spécial pour vérifier la valeur de Code :
(SELECT Count(*) FROM ListeCompétiteurs AS T WHERE T.IdCompétiteur<ListeCompétiteurs.IdCompétiteur AND T.IdCompétition = ListeCompétiteurs.IdCompétition)) Ca doit ressembler, pour chaque compèt, à : Citation:
__________________
"Fred point G" Recherche vieux jeux et autres ordis anciens !! (\ _ /) (='.'=) (")-(") |
|
|
|
00
|
|
|
#20 |
|
Invité régulier
![]() Inscription : juillet 2005 Messages : 38 ![]() |
L'erreur vennait du format du champs "intervalle", je l'avais mis en format "heure", alors qu'il doit être en format "numérique".
J'ai même été un peu plus loin en remplaçant le"10" par un champs "fréquence des pauses" et le "15" par durée des pauses" merci à tous c impécable phil |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com