Suivie des competiteurs

Résolu
phenix057
Messages postés
10
Date d'inscription
dimanche 20 décembre 2009
Statut
Membre
Dernière intervention
12 avril 2011
- 20 déc. 2009 à 21:42
phenix057
Messages postés
10
Date d'inscription
dimanche 20 décembre 2009
Statut
Membre
Dernière intervention
12 avril 2011
- 9 avril 2010 à 14:11
bonsoir

je voudrais crée une base de donnée qui me permettre de suivre les résultats des compétiteur de mon club:

pour cela j'ai pensé qui me fallait 3 table principal
une avec les renseignement des compétiteurs,
nom / prenom / date de naissance / sexe/ age / categorie /
adresse / mail.
une avec les discipline, et comme dans les discipline il existe des sous discipline, (environ 10 discipline et 100 sous discipline)
une sous discipline.

mon problème est comme dans toute compétition il y a des catégorie d'age
exemple :
poussin F et G jusqu'à 11ans
Benjamins F et G de 11ans à 12ans etc etc
je trouve la formule mais la table ne se met pas à jour, pourquoi?

les compétiteurs peuvent pratiquer plusieurs discipline et même plusieurs sous discipline.
mon problème est comment inscrire toute les disciplines de chaque compétiteur pour que lorsque je faire une recherche sur un compétiteur cela me donne toute les discipline et sous discipline qu'il pratique?

après je dois regroupe toute les informations du compétiteur pour lui inscrire s'est score ainsi que la place de la compétition.

et la je ne voir pas dutout comment faire!

merci d'avance pour votre aide

13 réponses

JeremyLecouvert
Messages postés
139
Date d'inscription
mardi 27 novembre 2007
Statut
Membre
Dernière intervention
10 mai 2010
2
21 déc. 2009 à 15:01
Salut,

je trouve la formule mais la table ne se met pas à jour, pourquoi?

Quelle est ta formule et comment mets-tu la table à jour?

Je pense que les champs Age et Categorie ne devraient pas se trouver dans la table Competiteurs, mais soit. Par contre, tu devrais mettre un champ Identifiant (auto-incrémenté) sur ta table. Tu peux très bien avoir 2 Michel Dupont inscrits, ça risque d'être gênant!

lorsque je faire une recherche sur un compétiteur cela me donne toute les discipline et sous discipline qu'il pratique?

Admettons les tables suivantes:
-table Activites (= sous-discipline) ( IdActivite , IdDisc, NomActivite). IdDisc représente la discipline dont dépend l'activité (ex: activité "SautLongueur" -> discipline "athlétisme").
-table Disciplines (IdDisc, NomDisc).
-table d'association ActiviteCompetiteur (IdCompetiteur, IdActivite). Elle permet de lier les compétiteurs aux activités qu'ils pratiquent.

A partir de là, pour lister les compétiteurs, leurs activités et les disciplines correspondantes, tu peux lancer cette requête:
SELECT NomCompetiteur, PrenomCompetiteur, NomDiscipline, NomActivite
FROM Competiteurs c, Activites a, Disciplines d, ActiviteCompetiteur ac
WHERE c.IdCompetiteur  = ac.IdCompetiteur
AND ac.IdActivite = a.IdActivite
AND a.IdDisc = d.IdDisc
ORDER BY NomCompetiteur, PrenomCompetiteur, NomDiscipline, NomActivite


... lui inscrire s'est score ainsi que la place de la compétition.

Il te faut donc une table de scores.
-table Scores (IdComp, IdActivite, Score). S'il peut y avoir plusieurs scores pour la même activité (ex: 3 essais au saut à la perche), il faut ajouter un champ qui permettra de les différencier, comme par exemple un n° d'essai, un champ date ou timestamp...

Bon courage!

Si l'envie te prend de travailler, assied-toi et attend qu'elle te passe! (vieux -et faux!- dicton corse)
3
JeremyLecouvert
Messages postés
139
Date d'inscription
mardi 27 novembre 2007
Statut
Membre
Dernière intervention
10 mai 2010
2
22 déc. 2009 à 09:45
Salut,

ActiviteCompetiteur est une table d'association. Il y a les tables Competiteurs et Activites. 1 competiteur peut exercer plusieurs activités, et 1 activité peut être exercée par plusieurs compétiteurs. Il te faut donc une table intermédiaire pour lier les compétiteurs aux activités qu'ils exercent.
En gros elle ressemble à ça:
------------------------------
| IdCompetiteur | IdActivite |
------------------------------
|      1        |     1      |
|      1        |     2      |
|      1        |     4      |
|      2        |     1      |
|      2        |     2      |
|      3        |     4      |
|      4        |     1      |
|      4        |     8      |
------------------------------


pour la question de la formule de AGE et de la CATEGORIE

Je reviens sur ce que je disais dans mon premier post:
Je pense que les champs Age et Categorie ne devraient pas se trouver dans la table Competiteurs

Moi, je créerais une table Catégorie(NomCategorie, AgeMin, AgeMax, Sexe).
L'âge n'a normalement pas besoin de figurer dans ta table puisque c'est un champ calculé. L'idée, c'est de ne garder que les données élémentaires (date de naissance) et de calculer l'âge comme tu le fais, à la volée.
Ensuite, pour trouver la catégorie qui correspond, tu lances une requête:
SELECT NomCategorie FROM Categorie, Competiteur 
WHERE Int(DiffDate("j";[Datedenaissance];Maintenant())/365,25)
>=AgeMin 
AND Int(DiffDate("j";[Datedenaissance];Maintenant())/365,25)
<=AgeMax 
AND Categorie.Sexe = Competiteur.Sexe
AND IdCompetiteur = MonCompetiteur

..Avec MonCompetiteur: identifiant du compétiteur que tu veux.


Si l'envie te prend de travailler, assied-toi et attend qu'elle te passe! (vieux -et faux!- dicton corse)
3
JeremyLecouvert
Messages postés
139
Date d'inscription
mardi 27 novembre 2007
Statut
Membre
Dernière intervention
10 mai 2010
2
23 déc. 2009 à 12:53
Salut,
elle n'apparait pas en ton que table

Cette table est indispensable pour lier Activites et Competiteurs. Ces 2 tables ont une relation "plusieurs à plusieurs" (1 compétiteur peut être lié à plusieurs activités, 1 activité peut être liée à plusieurs compétiteurs), ce n'est pas gérable par un SGBD relationnel. Dans ce cas, il faut décomposer la relation en 2 relations "un à plusieurs", en ajoutant une table intermédiaire. Cette table contient les clés primaires (identifiants) des 2 tables à associer. Ces 2 identifiants constituent la clé primaire de la table d'association. La table contient donc des couples (IdCompetiteur, IdActivite) uniques qui te permettent de retrouver pour chaque compétiteur toutes les activités qu'il pratique... ou dans l'autre sens, retrouver pour chaque activité tous les compétiteurs qui y participent.

les point virgule ne doive pas passe en SQL?

Essaie avec des virgules. Si tu mets ça dans une macro VBA par exemple, la fonction DiffDate s'écrit avec des virgules. Tu peux aussi utiliser une variable pour calculer l'âge et utiliser cette variable dans la requête...

Si l'envie te prend de travailler, assied-toi et attend qu'elle te passe! (vieux -et faux!- dicton corse)
3
phenix057
Messages postés
10
Date d'inscription
dimanche 20 décembre 2009
Statut
Membre
Dernière intervention
12 avril 2011

21 déc. 2009 à 23:27
bonjour

jusque la s'est se que jamais deja plus ou mien fais ou pense

le seule petit point qui est pas très net s'est dans le code SQL

SELECT NomCompetiteur, PrenomCompetiteur, NomDiscipline, NomActivite
FROM Competiteurs c, Activites a, Disciplines d, ActiviteCompetiteur ac
WHERE c.IdCompetiteur = ac.IdCompetiteur
AND ac.IdActivite = a.IdActivite
AND a.IdDisc = d.IdDisc
ORDER BY NomCompetiteur, PrenomCompetiteur, NomDiscipline, NomActivite


s'est l'ActiviteCompetiteur tu va la cherche ou?

pour la question de la formule de AGE et de la CATEGORIE

pour l'age
dans le NOM du champ
Age: Int(DiffDate("j";[Datedenaissance];Maintenant())/365,25)


pour la catégorie
dans le nom du champ:
Categorie: EvalCategorie(Int(DiffDate("j";[Datedenaissance];Maintenant())/365,25);[Sexe])

et un module:Function EvalCategorie(Age As Integer, Sexe As String) As String
 
If Age <= 11 Then
If Sexe = "M" Then
   EvalCategorie = "poussinG"
   Else
EvalCategorie = "poussinF"
End If

ETC.....ETC.....ETC....

ElseIf Age > 59 Then
   If Sexe = "M" Then
      EvalCategorie = "Vétérans3"
   Else
      EvalCategorie = "Vétérans3"
   End If
End If
 
End Function


Merci pour les renseignements que tu ma déjà apporté
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
phenix057
Messages postés
10
Date d'inscription
dimanche 20 décembre 2009
Statut
Membre
Dernière intervention
12 avril 2011

22 déc. 2009 à 19:41
bonsoir

pour la Table activitecompetiteur s'est une relation entre les tables activité et compétiteur

si s'est sa elle n'apparait pas en ton que table
0
phenix057
Messages postés
10
Date d'inscription
dimanche 20 décembre 2009
Statut
Membre
Dernière intervention
12 avril 2011

22 déc. 2009 à 22:55
bonsoir

dans le code

SELECT NomCategorie FROM Categorie, Competiteur
WHERE Int(DiffDate("j";[Datedenaissance];Maintenant())/365,25)
>=AgeMin
AND Int(DiffDate("j";[Datedenaissance];Maintenant())/365,25)
<=AgeMax
AND Categorie.Sexe = Competiteur.Sexe
AND IdCompetiteur = MonCompetiteur

les point virgule ne doive pas passe en SQL?

le code n'ai pas fermé a la fin ?
0
phenix057
Messages postés
10
Date d'inscription
dimanche 20 décembre 2009
Statut
Membre
Dernière intervention
12 avril 2011

25 déc. 2009 à 15:03
bonjour

ok pour les lieu entre les tables compétiteur et activité.
mais je ne voie toujours pas pourquoi tu fais une table intermédiaire?

pour les activités du compétiteur comment fais tu pour lui mettre plusieurs activité?
car la pour le moment j'ai du rajoute un champs activité dans ma table compétiteur pour pouvoir faire une lien
0
phenix057
Messages postés
10
Date d'inscription
dimanche 20 décembre 2009
Statut
Membre
Dernière intervention
12 avril 2011

30 déc. 2009 à 17:57
bonjour

j'ai touver pour la catégorie a la place de ton code
SELECT NomCategorie FROM Categorie, Competiteur 
WHERE Int(DiffDate("j";[Datedenaissance];Maintenant())/365,25)
>=AgeMin 
AND Int(DiffDate("j";[Datedenaissance];Maintenant())/365,25)
<=AgeMax 
AND Categorie.Sexe = Competiteur.Sexe
AND IdCompetiteur = MonCompetiteur


j'ai mie
SELECT competiteur.NomCompetiteur, categorie.Nomcategorie
FROM competiteur INNER JOIN categorie ON competiteur.Sexe = categorie.Sexe
WHERE Int(DateDiff("d",[Datenaissance],Now())/365.25) BETWEEN AgeMin AND AgeMax;


et le résultat est correcte

merci
0
JeremyLecouvert
Messages postés
139
Date d'inscription
mardi 27 novembre 2007
Statut
Membre
Dernière intervention
10 mai 2010
2
4 janv. 2010 à 10:30
Salut,

je ne voie toujours pas pourquoi tu fais une table intermédiaire?


comment fais tu pour lui mettre plusieurs activité?

C'est justement pour ça que la table d'association est nécessaire!
Regardes mon post du 23/12: Dans le tableau (description de la table d'association), tu peux voir que pour le compétiteur n°1, il y a 3 lignes (1 pour chaque activité). Ce compétiteur exerce donc les activités n°1, 2 et 4. De la même manière, le compétiteur n°2 exerce les activités 1 et 2, etc...
Cette table te permet aussi de connaître les personnes inscrites à une activité. Ici, pour l'activité n°1, nous avons 3 inscrits: les compétiteurs 1,2 et 4. etc...

Si tu ajoutes un champ Activité dans la table Competiteurs, tu ne pourras ajouter qu'une seule activité par compétiteur.

@+.

Si l'envie te prend de travailler, assied-toi et attend qu'elle te passe! (vieux -et faux!- dicton corse)
0
JeremyLecouvert
Messages postés
139
Date d'inscription
mardi 27 novembre 2007
Statut
Membre
Dernière intervention
10 mai 2010
2
4 janv. 2010 à 10:32
Pardon, c'était dans le post du 22, pas du 23!

Si l'envie te prend de travailler, assied-toi et attend qu'elle te passe! (vieux -et faux!- dicton corse)
0
phenix057
Messages postés
10
Date d'inscription
dimanche 20 décembre 2009
Statut
Membre
Dernière intervention
12 avril 2011

4 janv. 2010 à 19:23
bonjour

bonne année a toi

je suis d'accord avec toi mais le tableau
------------------------------
| IdCompetiteur | IdActivite |
------------------------------
|      1        |     1      |
|      1        |     2      |
|      1        |     4      |
|      2        |     1      |
|      2        |     2      |
|      3        |     4      |
|      4        |     1      |
|      4        |     8      |
------------------------------


j'ai essayer de crée cette table mais je n'arrive pas a obtenir une telle réponse

mais en rajoutent le champs IDactivite dans ma table compétiteur en valeur multiple la j'arrive a mettre plusieurs activité a mon compétiteur

si tu peut me dire comment tu crée exactement cette table je suis preneur

et même si tu est ok laisse moi ton mail je te transfert ma base tu pourra mieux voir se que j'ai fais

encore merci pour ton coup de main
0
JeremyLecouvert
Messages postés
139
Date d'inscription
mardi 27 novembre 2007
Statut
Membre
Dernière intervention
10 mai 2010
2
5 janv. 2010 à 13:48
Salut,

Je ne connais pas l'utilisation des champs à valeurs multiple, mais je ne pense pas que ce soit l'idéal. Il te permet de connaître les activités d'un compétiteur, mais si tu veux savoir quels compétiteurs sont inscrits pour une activité donnée, je ne suis pas sûr que tu t'y retrouves facilement.

Voici la requête de création de la table d'association:
CREATE TABLE ActiviteCompetiteur
(IdCompetiteur integer,
IdActivite integer,
CONSTRAINT IndexCA PRIMARY KEY (IdCompetiteur, IdActivite),
CONSTRAINT FK_CA_IdComp FOREIGN KEY (IdCompetiteur) REFERENCES Competiteurs,
CONSTRAINT FK_CA_IdAct FOREIGN KEY (IdActivite) REFERENCES Activites);


De cette manière, aucun souci pour interroger la base dans les 2 sens:
- Les activités exercées par le compétiteur n°1:
SELECT IdActivite FROM Activites a, ActiviteCompetiteur ac
WHERE a.IdActivite = ac.IdActivite
AND ac.IdCompetiteur = 1


- Les compétiteurs qui pratiquent l'activité n°3:
SELECT IdCompetiteur, NomCompetiteur, PrenomCompetiteur FROM Competiteurs c, ActiviteCompetiteur ac
WHERE c.IdCompetiteur = ac.IdCompetiteur
AND ac.IdActivite = 3


- Les compétiteurs qui pratiquent le javelot:
SELECT IdCompetiteur, NomCompetiteur, PrenomCompetiteur FROM Activites a, Competiteurs c, ActiviteCompetiteur ac
WHERE c.IdCompetiteur = ac.IdCompetiteur
AND a.IdActivite = ac.IdActivite
AND a.NomActivite = 'Javelot'


@+!

Si l'envie te prend de travailler, assied-toi et attend qu'elle te passe! (vieux -et faux!- dicton corse)
0
phenix057
Messages postés
10
Date d'inscription
dimanche 20 décembre 2009
Statut
Membre
Dernière intervention
12 avril 2011

9 avril 2010 à 14:11
bonjour

après une absence professionnel je me repenche sur ma base de données

je voudrais savoir qu'elle programme vous utilise pour programmé

merci bonne soirée
0