-
Type de format
Bonjour à tous,
J'ai un probleme de declaration de format (ou une mauvaise conception). Ma table est la suivante : T_palmares(id_pal, id_athlete, competition, epreuve, performance ).
Dans la colonne performance comporteras des valeurs sous format :
Pour 400m :
46.62
46.15 ....
Pour 1500m
3:29.27
4:43.25 ......
Pour marathon
2h18:23.12
2h45:15.09 ......
Mon probleme c'est au niveau de tri pour un epreuve donnée. et comme vous voyez il n'y a pas une coherence au niveau des valeurs de la colonne performances. Pour info j'utilise comme moteur de base de données SQL Server 2005.
___________________________
http://lesformations.blogspot.com
-
bonjour,
quel format voudriez-vous obtenir au final ? quelle requête lancez-vous ? Et quelle est la structure de la table (type de données)) ?
Merci
-
je pense que j'etais pas clair, ok je m'explique :
J'ai 3 tables
t_athlete(id_ath,nom,prenom,....),
t_epreuve(id_epr,epreuve),
t_palmares(id,id_ath,id_epr,endroit,manifestation,palmares)
palmares c'est le temps réalisé (pour athlete X qui participe dans 400m il a parcouri dans 46.62) mais la performance prend a chaque fois une forme selon l'epreuve cad pour les course de vitesse (100m,200m,400m haie...) normalement j'aurai cette format (xx.yy exp 46.62). Pour le fond et le demi fond (xx:yy.zz exp 4:43.25) et pour marathon, semi marathon (aahbb:cc.dd exp 2h18:23.12) pour les sauts(aambb exp 1m50).
Mon probleme c'est au niveau de tri. cad pour un epreuve donnée je dois faire le tri ou la selection d'ordre croissant (course de vitesse, fond, demi font et course sur route) et d'ordre décroissant pour les sauts pour voir la meilleure réalisation effectuer par quel athlete?
et pour chaque athlete, il faut voir sa meilleure réalisation cad performances effectué?
____________________________
http://lesformations.blogspot.com
-
Pour résoudre ton problème sans toucher au format des données de la table tu peux faire un
ORDER BY
(CASE
--course de vitesse, fond, demi font et course sur route
WHEN id_epr=1 THEN performance --400 m
WHEN id_epr=2 THEN performance--marathon
--sauts
WHEN id_epr=5 THEN -1*performance--marathon
END)
Ou alors mettre le résultat de ce CASE dans une colonne ORDER_PERFORMANCE et tu ferais un ORDER BY dessus.
On pourrait faire la même chose pas seulement pour l'ordre mais aussi pour le format de l'affichage, mais en revanche ça peut se faire dans l'application appelante.
-
Merci pour votre reponse, je voudrais savoir aussi le champ performance il est de quel type (varchar, text datetime, malheureusement en sql server y a pas le format time) mais une autre contrainte les performances de longueur et de saut sont en metre ?
____________________________
http://lesformations.blogspot.com