begin process at 2012 05 27 02:46:47
  Trouver un code source :
 
dans
 
Accueil > Forum > 

SQL

 > 

Access

 > 

Débutant(s)

 > 

suivie des competiteurs


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

suivie des competiteurs

dimanche 20 décembre 2009 à 21:42:06 | suivie des competiteurs

phenix057

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
lundi 21 décembre 2009 à 15:01:54 | Re : suivie des competiteurs

JeremyLecouvert

Réponse acceptée !
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:
Code :
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)
lundi 21 décembre 2009 à 23:27:09 | Re : suivie des competiteurs

phenix057

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

Code :
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
Code :
dans le NOM du champ
Age: Int(DiffDate("j";[Datedenaissance];Maintenant())/365,25)


pour la catégorie
Code :
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é


mardi 22 décembre 2009 à 09:45:14 | Re : suivie des competiteurs

JeremyLecouvert

Réponse acceptée !
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:
Code :
------------------------------
| 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:
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

..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)
mardi 22 décembre 2009 à 19:41:54 | Re : suivie des competiteurs

phenix057

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
mardi 22 décembre 2009 à 22:55:23 | Re : suivie des competiteurs

phenix057

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 ?
mercredi 23 décembre 2009 à 12:53:50 | Re : suivie des competiteurs

JeremyLecouvert

Réponse acceptée !
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)
vendredi 25 décembre 2009 à 15:03:37 | Re : suivie des competiteurs

phenix057

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
mercredi 30 décembre 2009 à 17:57:15 | Re : suivie des competiteurs

phenix057

bonjour

j'ai touver pour la catégorie a la place de ton code
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
Code :
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
lundi 4 janvier 2010 à 10:30:56 | Re : suivie des competiteurs

JeremyLecouvert

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)

1 2

Cette discussion est classée dans : table, discipline, suivie, compétiteur, competiteurs


Répondre à ce message

Sujets en rapport avec ce message

pk particuliere [ par jimmy69 ] Bonjour a tous,Ravi de savoir que le reseaux code sources s'agrandit => tant mieux !Voila j'ai besoin de vous j'ai un p'tit stress !Je suis sous sql s Nom de table !? [ par jimmy69 ] Bonjour a tous,Je suis en train de realiser un p'tit projet en php avec sql serveur 2000 !J'ai une p'tite question a vous poser !je suis en train de c Trigger [ par frop01 ] Salut,J'ai une table Categorie (Code_cat, Libelle) et une autre table sous_categorie (code_scat, code_cat, libelle)Je voudrais créer un déclencheur qu delete et contrainte d'integrite ... [ par jimmy69 ] Bonjour a tous,Voila je dois realiser un projet sous sql serveur et un langage de script web ...j'en suis a l'analyse ...pas facile !bref, je vous exp Procedure exportant une table en excel [ par karn ] Bonjour,est 'il avec possible avec une procedure stocker d'exporter une table au format excel? analyse entite relation [ par jimmy69 ] bonjour a tous,Voila j'ai quelques problemes au sujet de mon analyse ....alors je me tourne vers vous !je vous explique:je dois realiser un intranet p sql serveur et not null [ par jimmy69 ] Bonjour,Je debute sous sql serveur et bon j'ai un stress !J'ai cree une table que voici CREATE TABLE T_personnes ( pktest INTEGER IDENTITY(0,1) NOT probleme de comparaison de table [ par ehmarc ] SalutJe suis sous MySQL voici ma requetejai deux table t1 et t2 qui ont en gros une soixantaine d'entrer chacunneje veut faire ressortir les champ qui if dans une procédure stocké ? [ par jesusonline ] Bonjour, je ne connais pas encore SQLj'ai une table articles qui a un champ ID et je voudrais une fonction stocké qui prend en paramètre un ID et qui REQUETEAJOUT DE TABLE [ par sevajol ] Quelle requete utilié pour obtenir les enregistrement contenus dans 2 table distinctes ( Type et nb de champs identique)ALX34


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,215 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales