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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  pb avec une grosse requête...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

pb avec une grosse requête...

n°781392
titione
addicted
Posté le 29-06-2004 à 13:18:03  profilanswer
 

alors voilà le pb :  
 
j'ai une table qui contient des matchs (matchid, equipe1, equipe2)
une table qui contient des pronostiques (pronoid, matchid, login, score)
 
je voudrais avoir un gros tableau un peu comme ça :

Code :
  1. |  olivier  | pierre |  marie  |
  2. ________|___________|________|_________|
  3. match 1 |    1-0    |    -   |    2-1  |
  4. match 2 |    2-1    |  1-0   |     -   |
  5. match 3 |    1-3    |   0-1  |     -   |


je voudrais faire le truc en une requête.... toute la subtilité (enfun une grosse partie) vient du fait que tout le monde n'a pas pronostiqué à chaque match forcément... (et que donc dans mon parsing des résultats, je dois faire attention de ne pas zapper la cellule...)
j'ai essayé avec des join mais j'arrive pas au résultat escompté: dans quel sens faire le join ?? :)
je précise aussi que j'ai une table des personne si nécessaire...
merci d'avance


Message édité par titione le 29-06-2004 à 14:29:35
mood
Publicité
Posté le 29-06-2004 à 13:18:03  profilanswer
 

n°781401
Lord II
PIB2000
Posté le 29-06-2004 à 13:24:37  profilanswer
 

Le probleme ne va pas etre la requete mais plutôt la facon de l'afficher . De toute facon, il faudra faire une requete pour récupérer la liste des pronostiqueurs
 

Code :
  1. select m.matchid,m.equipe1,m.equipe2,p.pronoid,p.score,p.login from matchs m, prono p
  2. where m.matchid=p.matchid
  3. order by m.matchid,p.login


 
De plus si tu as une table personne, je suppose que celle-ci a un id, pourquoi ne pas l'avoir mis dans la table prono ??
 
Ensuite, je vois l'algo comme ca
Une première requete pour alimenter un tableau tab[idlogin]=login
Ensuite la deuxième requete, les lignes sont ordonnées de facon à afficher les matchs dans l'ordre et les pronostiqueurs dans l'ordre. Tu verifies que la personne à parier sinon tu mets une case vide
et voilà


Message édité par Lord II le 29-06-2004 à 13:27:56

---------------
La bave du crapaud n'empèche pas la caravane de passer .
n°781457
titione
addicted
Posté le 29-06-2004 à 14:10:44  profilanswer
 

le but était de tout faire en une requête... (mis à part la première ligne of course...)
pour la table personne, l'id c le login c pareil...

n°781510
Beegee
Posté le 29-06-2004 à 14:44:52  profilanswer
 

+1 pour la requête de Lord ii :)
 
ensuite, tu fetches ligne par ligne par exemple, et tu formes un tableau à 2 dimensions :
- première dimension: le match,
- deuxième dimension: la personne.
En même temps, tu qtoques dans un tableau à une dimension le nom des personnes distinctes ayant fait au moins un prognostic.
 
Après, il est facile de faire une boucle sur le tableau à 2 dimensions, sur la première dimension, et d'appeler une fonction qui affiche la ligne du match en question.
Cette fonction prendra en argument le sous-tableau des prognostics (pour le match courant) et le tableau des personnes ayant fait au moins un prognostic, et affichera pour chaque personne le prognostic fait ou '-' :)

n°781532
titione
addicted
Posté le 29-06-2004 à 15:06:15  profilanswer
 

j'ai du mal à voir comment je peux synchroniser les noms des personnes qui ont pronostiqué avec les noms pour chaque match...
c ptet la transformation en tableau que je vois pas exactement en fait :(

n°781548
Lord II
PIB2000
Posté le 29-06-2004 à 15:21:42  profilanswer
 

Il te suffit des les ordonner suivant le meme paramètre ( en l'occurence login )
Ensuite, il te suffit de voir si au moment de l'affichage des pronostiques, il ne manque pas un pronostiqueur.


---------------
La bave du crapaud n'empèche pas la caravane de passer .
n°788592
bill_clint​on
nonon j'ai pas de stagiaire ..
Posté le 06-07-2004 à 23:34:39  profilanswer
 

Code :
  1. select m.matchid,m.equipe1,m.equipe2,p.pronoid,p.score,p.login from matchs m, prono p
  2.   where m.matchid=p.matchid
  3.   order by m.matchid,p.login


 
si aucun pronostic n'a été fait pour un match, il n'apparaîtra pas dans la liste
 
en fait ce serait plutôt dans ce style :
 

Code :
  1. select m.matchid, m.equipe1, m.equipe2, p.login, p.score from match m
  2.   left join prono p on p.pronoid = m.matchid
  3.     order by m.matchid, p.login


 
ensuite l'algo ca donnerait ca :
 

Code :
  1. array login[]
  2.   nb_login = 0
  3.   function test_login(a):
  4.    test_login = 0
  5.    for i = 0 to nb_login:
  6.     if (login[i] = a) then:
  7.        test_login = i
  8.      exit
  9.   pos_login = 0
  10.   while not rs.eof:
  11.    new_match_id = rs(0)
  12.    if (new_match_id <> old_match_id) then:
  13.       pos_login = 0
  14.    if (test_login(rs(3)) = 0) then: -> la recherche du login dans le tableau est nulle
  15.                                      donc il faut le rajouter
  16.     login[nb_login+1] = rs(3)
  17.     nb_login++
  18.    if (pos_login) then:  -> on passe à une nouvelle ligne donc on affiche le libellé du
  19.                           match avec les équipes
  20.    if (!issnull(p_login)) then: -> il y a au moins un pronostic
  21.     pos_visuel_login = test_login(rs(3)) -> ici on connait la position visuelle du login
  22.                                           donc on peut décaler l'affichage de
  23.                                           pos_visuel_login - pos_login
  24.    old_match_id = rs(0)
  25.    pos_login++
  26.    rs.movenext


Message édité par bill_clinton le 07-07-2004 à 19:41:22

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

  pb avec une grosse requête...

 

Sujets relatifs
[SGBD/SQL] Optimisation de requêtedate dans une requete sql
[SQL]Classer résultats requête suivant une liaison réflexive.C# : requete sql avec parametres !!
[VBA Excel] Erreur 424 sur une requete sql Access dans excel [Resolu]requete sql mise à jour dans code vb
[access](RESOLU) savoir si une requête sort un résultat ou non ??mysql : requête entre plusieurs lignes N, N-1, N-2, etc...
(resolue) lancement automatique d'une requete verifiant la date[PHP] Afficher le résultat d'une grosse requête ?
Plus de sujets relatifs à : pb avec une grosse requête...


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