requête simple ou multiple ?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : requête simple ou multiple ?

par Neophyte » 24 avr. 2006, 20:47

ensuite tu n'auras pas exactement l'affichage que tu souhaites mais fauras le construire en programmant après.
Oui effectivement... Donc il n'y a pas de raccourcis !

Encore merci d'avoir éclairé ma lanterne !

:)

par Truc » 23 avr. 2006, 23:29

non non, j'ai rien compris à tes calcul mathématiques et tout le tralala de prestigiditateur :lol:

Tu as omis ce détail de grade mais ça n'as pas d'importance directe.

Tu dois ajouter un champ pour le grade à la table des joueurs, tu auras donc:

Code : Tout sélectionner

tbl_team: - id_team - nom_team tbl_joueur: - id_joueur - nom_joueur - prenom_joueur - id_team - grade (en type enum avec ("boss","adjoint","membres ")
ensuite tu n'auras pas exactement l'affichage que tu souhaites mais fauras le construire en programmant après.

par Neophyte » 23 avr. 2006, 20:17

Merci pour vos explications.

A vrai dire, la structure présentée a omis un point important...

tbl_team :
- id_team
- id_1
- id_2
- id_3
- etc…

A savoir que l'ordre des id_1, id_2, id_3, id_4 avait une importance certaine. En l'occurence :
- col 2 : id_1 est le boss,
- col 3 : id_2 est l'adjoint,
- col 4 et suivantes : id_3 -> id_12 sont de membres avec des prérogatives différentes.

Je cherchais le résultat d'une requête qui m'aurais sorti une ligne par équipe, avec : prenom_id_1, nom_id_1, prenom_id_2, nom_id_2, prenom_id_3, nom_id_3. Pour l'instant, j'obtient plusieurs ligne par équipe et je ne sais plus de quelle colonne provient les noms/prénoms.

Comme c'est parti, j'ai l'impression qu'il va falloir faire quelques jongleries entre les requêtes SQL... A moins qu'il y ait une expression élégante pour sortir ce tableau où l'on remplace des numéros d'identités (14 num_id = 14 colonnes) par un couple nom / prénom (14 x 2 colonnes = 28 colonnes + une première colonne avec le nom de l'équipe). En effet, si la requête se construit ainsi, je peux retrouver facilement la nature des différents membres de l'équipe (3 rôles différents) en fonction de la position dans le tableau (numéro de la colonne).

De mon côté, je vais continuer à méditer sur ce sujet. Si vous avez une autre idée, merci d'avance.

par Truc » 23 avr. 2006, 12:19

Salut,

Proposition:

Code : Tout sélectionner

SELECT t1.id_team, t2.prenom_joueur, t2.nom_joueur FROM tbl_team t1, tbl_joueur t2 WHERE t1.id_1 = t2.id_joueur OR t1.id_2 = t2.id_joueur
...

Code : Tout sélectionner

SELECT t1.id, t2.prenom_joueur, t2.nom_joueur FROM tbl_team t1 JOIN tbl_joueur t2 ON t1.id_1 = t2.id_joueur OR t1.id_2 = t2.id_joueur ...
Mais tu vas avoir des requetes à rallonge :?

tu ne devrais pas avoir tant de champs id_1, id_2, ... dans la table "tbl_team".
Une structure de ce genre plustôt:

Code : Tout sélectionner

tbl_team id id_team id_joueur
ensuite une entrée pour chaque joueur avec l'id_team auquel il appartient.

Code : Tout sélectionner

tbl_team : 1 team_1 600 2 team_1 100 3 team_1 50 4 team_1 200 5 team_1 1000 6 team_1 750 7 team_37 550 8 team_37 99
Et la requete serait simlifiée, du genre:

Code : Tout sélectionner

SELECT t1.id_team, t2.prenom_joueur, t2.nom_joueur FROM tbl_team t1 JOIN tbl_joueur t2 ON t1.id_joueur = t2.id_joueur

par Shrell » 23 avr. 2006, 12:17

A ta place je partirais complètement dans l'autre sens:
je m'explique:
Imaginons 2 tables :

tbl_team :
- id_team
- id_1
- id_2
- id_3
- etc…

tbl_joueur :
- id_joueur
- prenom_joueur
- nom_joueur
Je ferais plutot :

Code : Tout sélectionner

tbl_team: - id_team - nom_team tbl_joueur: - id_joueur - nom_joueur - prenom_joueur - id_team
à partir de là, en faisant
$requete=mysql_query("SELECT * FROM tbl_joueur AS j LEFT JOIN tbl_team AS t ON j.id_team=t.id_team ORDER BY id_team");
$team_en_cours="";
while($r=mysql_fetch_array($requete)) {
   if($r[nom_team]!=$team_en_cours) {
      if($team_en_cours!="") {
         echo "</ul>";
      }
      $team_en_cours=$r[nom_team];
      echo $r[nom_team]."<ul>";
   }
   echo "<li>".$r[nom_joueur]." ".$r[prenom_joueur]."</li>";
}
voilà, j'ai pas testé mais ça devrait pas etre trop mal ;)

requête simple ou multiple ?

par Neophyte » 23 avr. 2006, 09:36

Je bute sur la composition d’une requête MySQL…

Imaginons 2 tables :

tbl_team :
- id_team
- id_1
- id_2
- id_3
- etc…

tbl_joueur :
- id_joueur
- prenom_joueur
- nom_joueur


ex :
tbl_team :
- team1 / 600 / 100 / 50 / 200 / 1000 / 750
- team37 / 550 / 99 / 45 / etc.

tbl_joueur :
- 600 / Pedro / Lalumiere
- 100 / Paula / Bonita
- 50 / Roger / Rabit
- etc…


Je souhaiterais construire une requête qui me donne les résultats suivants (c'est-à-dire que les numéros d'identification des joueurs sont remplacés par leurs prénoms et noms) :

- team1 / Pedro / Lalumiere / Paula / Bonita / Roger / Rabit/ etc.

- team37 / prenomX / nomX / prenomY / nomY / etc.

Y a-t-il un moyen de faire le tout en une seule requête ou bien faut-il jongler avec de multiples requêtes (en l’occurrence dans la table tbl_team, j’ai l’id de l’équipe + 12 colonnes) ?

Merci d'avance, car je n'ai rien trouvé jusqu'ici sur le sujet.