Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
972 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [ACCESS] Problème infinité des même résultats d'une Requêtes

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[ACCESS] Problème infinité des même résultats d'une Requêtes

n°2199608
Pauly07
Posté le 07-08-2013 à 12:19:36  profilanswer
 

Bonjour à tous,
Je suis un petit nouveau dans la programmation en SQL et notamment à l'usage d'Access.
J'aimerai réalisé une application de chronométrage. Et voici mes dispositions :
J'ai crée 5 tables (Participants 65 km, Participants 100 km, Equipe 65 km et Equipe 100 km, Start/Finish), les 4 premières table contiennent 4 champs (Dossard, Nom, Prénom, Année)
Et Start/Finish contient les champs : dossard (de 1 à 1599), start et finish
Ma clé primaire étant le Dossard, cela permet de relié toutes les tables. (Participants 65 km : Dossard de 1 à 699, Participants 100 km, Dossard de 1000 à 1299, Equipe 65 km : Dossard de 900 à 999 et Equipe 100 km : Dossard de 1500 à 1599)  
 
Je voudrai entrer une valeur du numéro de dossard, et la requête m'afficherait le dossard, le nom et le prénom de la personne et son temps et ça peut importe les tables.  
J'y suis arrivé, le soucis c'est que j'obtiens bien le bon résultat (Dossard, personne + les temps) mais je l'obtiens des centaines de fois à la suite l'un de l'autre.  
Et je ne vois pas du tout ou se situe le problème, si qqn aurait envie de jeter un coup d'oeil, il me rendrait un grand service !  
 
J'espère avoir été le plus clair possible,
Merci d'avance,
Pauly07
 
Voici mon code :  
 
SELECT [Start/Finish].Dossard, (IIf(([Start/Finish].Dossard<700),([Participants 65 km].Nom),IIf((([Start/Finish].Dossard>899) And ([Start/Finish].Dossard<1000)),([Equipe 65 km].[Nom]),IIf((([Start/Finish].Dossard>999) And ([Start/Finish].Dossard<1300)),([Participants 100 km].Nom),([Equipe 100 km].[Nom]))))) AS Nom, (IIf(([Start/Finish].Dossard<700),([Participants 65 km].Prénom),IIf((([Start/Finish].Dossard>899) And ([Start/Finish].Dossard<1000)),([Equipe 65 km].[Prénom]),IIf((([Start/Finish].Dossard>999) And ([Start/Finish].Dossard<1300)),([Participants 100 km].Prénom),([Equipe 100 km].[Prénom]))))) AS Prénom, [Start/Finish].Start, [Start/Finish].Finish
 
FROM [Equipe 65 km], [Equipe 100 km], [Participants 100 km], [Start/Finish], [Participants 65 km]
 
WHERE ((([Start/Finish].Dossard)=[Entrez un numéro de Dossard]) AND ([Start/Finish].Dossard=[Participants 65 km].Dossard OR [Start/Finish].Dossard=[Participants 100 km].Dossard OR [Start/Finish].Dossard=[Equipe 65 km].Dossard OR [Start/Finish].Dossard=[Equipe 100 km].Dossard));
 

mood
Publicité
Posté le 07-08-2013 à 12:19:36  profilanswer
 

n°2199621
rufo
Pas me confondre avec Lycos!
Posté le 07-08-2013 à 14:23:01  profilanswer
 

Je ne dirais qu'une chose : [:jeebus]
- Tables avec des noms pas normalisés (ie, sur aucun autre SGBD une table avec un nom contenant des espaces passerait)
- des IIF() dans le select alors que ça pourrait probablement être dans le where ou la clause having
- des OR dans le where en veux-tu en voilà, pas mieux pour te pourrir les perfs (bon, cela dit, parler de perfs avec Access  :whistle: )
 
Un conseil : construit toi-même ta BD avec des tables biens normalisées (je pense aussi aux relations entre les données => voir la forme 3NF de Codd) puis écris tes requêtes SQL, ça sera bien plus propre et surtout, bien plus maintenable :/
 
T'as 4 tables ayant la même structure -> t'en fait 1 seule avec un champ en plus qui contient la distance. Rien que ça, tu vois déjà que ça sera bien plus pratique si tu dois introduire une distance supplémentaire. Tu vas pas faire une table pour une seule distance :sarcastic:


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2199635
Pauly07
Posté le 07-08-2013 à 17:20:13  profilanswer
 

Merci d'avoir répondu aussi vite et pour les différents conseils  
J'avoue que le code n'est pas léger léger xD
Je vais tester avec la clause having voir si je peux réunir toutes les conditions et abandonner par la même occasion le connecteur OR.  
J'avais à la base crée 4 tables pour différencier chaque catégories et qu'elles soient indépendantes des une des autres d'où le code. Si je n'y arrive pas, je joindrai le tout en une table (tant pis pour le principe des 4 tables séparées), ça détournera mon problème. Et je n'aurai plus que ceci :
 
SELECT Participants.Dossard, Participants.Nom, Participants.Prénom, [Start/Finish].Start, [Start/Finish].Finish
FROM Participants, [Start/Finish]
WHERE (([Start/Finish].Dossard=[Entrez un numéro de Dossard]) AND ([Start/Finish].Dossard=Participants.Dossard));
 
Encore merci

n°2199638
rufo
Pas me confondre avec Lycos!
Posté le 07-08-2013 à 17:37:35  profilanswer
 

Citation :

tant pis pour le principe des 4 tables séparées


Pas grave, c'était vraiment pas un bon principe. ;) Le partitionnement existe sur bon nombre de SGBD mais c'est juste pour améliorer les perfs (mais là, c'est quand on a des tables de plusieurs millions d'enregistrements) : d'un point de vue logique, le développeur voit 1 seule table, mais physiquement, sur le HDD, y'a plusieurs "sous-tables", le partitionnement se faisant soit en fonction d'une colonne (ça serait ton cas avec la distance qui servirait de critère de partitionnement) soit en fonction d'un nb de lignes (genre, tous les 10 millions de lignes, on fait une nouvelle table physique).


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [ACCESS] Problème infinité des même résultats d'une Requêtes

 

Sujets relatifs
[ACCESS] Fusion de 2 requêtes SQLproblème avec script php
Access plante à l'exécution d'un module code VBAProblème exercice
problème sql surprenantProblème avec JSP file
problème height avec IE probleme d'insersion d'image
Plus de sujets relatifs à : [ACCESS] Problème infinité des même résultats d'une Requêtes


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR