Aller au contenu

Requête sur 2 tables différentes


Sujets conseillés

Posté

Bonjour,

Voici les schéma de mes tables :

mysql.gif

La (ma ?) difficulté, c'est d'afficher la liste des élèves avec leurs groupes. :o

mysql_query("SELECT * FROM `eleves` WHERE 1 ORDER BY `nom` ASC, `groupe` ASC")

Le problème avec cette requête que je n'ai que l'id du groupe et qu'il faudrait que j'aille le chercher dans la seconde table. :unsure:

Pourriez vous me dire la bonne requête, merci d'avance ^_^

Posté

Kikou

Il faut que tu agisses sur les deux tables.

FROM eleves, groupe

Et que tu fasses une jointure

WHERE eleves.groupe=groupe.id

Je prefere ne pas te donner la bonne requete, tu n'amuseras plus à la faire par toi meme je pense.

Posté

Je pensais bien que c'était un truc du style, mais chaque table a un champ 'groupe', donc difficile de les distinguer apèrs l'envoi de la requête.

Mais l'un, c'est l'id du groupe et l'autre son nom.

Le mieux à faire, c'est de changer le nom du champ 'groupe' de la table 'eleve' par 'id_groupe' peut-être ?

Posté (modifié)

Si tu y vois plus clair en changeant le non de tes champs oui :)

Perso je l'appellerai id_groupe comme tu le proposes.

Modifié par KaRaK
Posté

Tu peux très bien laisser la base comme ceci, mais appeler les champs différemment, juste pour la requète :

SELECT nom_table.nom_champ as nouveau_nom etc..

Posté
Tu peux très bien laisser la base comme ceci, mais appeler les champs différemment, juste pour la requète :

SELECT nom_table.nom_champ as nouveau_nom etc..

<{POST_SNAPBACK}>

Je pense que je vais changer le nom du champ, mais merci ta technique. Je m'en servirai sous peu :D

Posté (modifié)

[HS]

Pour alléger la lecture de ta requête, et l'écriture aussi, tu peux utiliser des abréviations pour tes bases. Genre

SELECT nv.nom as nouveau_nom, ac.nom as acien_nom FROM ma_base_qui_attend_d_etre_update as, ma_bas_qui_est_update nv

J'espère que tu as compris ce que je vouslais dire...

[/HS]

Modifié par e.MiLoU
Posté (modifié)

Juste une chose : Essaie d'utiliser des inner join au lieu de jointure externes :

Select eleves.id, eleves.nom, groupe.id, groupe.nom

from eleves

inner join groupe

on eleves.groupe = groupe.id

Tu devrais aussi rajouter un index sur 'id' de 'groupe'. :)

Portekoi

Modifié par portekoi

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...