[mysql - php] plusieurs tables pour un select ORDER BY
Oyo à tous !
(petit bonjour à Mr N. et Siddh au passage :wink: )
Bien voici mon petit soucis :
Je commence à vouloir intégrer des requêtes sql avec plusieurs paramètres, et surtout en recherchant dans plusieurs tables à la fois... En gros vive l'optimisation des requêtes !
Donc voilà :
J'ai une table qui s'appelle membres. Dedans j'ai plusieurs champs que je veux afficher (on prend par exemple nom et mail). Parmi ces champs j'ai celui nommé Guilde_Rang_Membre... Ce champ correspond à l'id dans une autre table...
L'autre table se nomme guilde_rang. Dedans j'ai id_rang en champs, ainsi que position_rang et d'autres...
Je souhaite :
faire un "select (tous mes champs de ma table membres mais nommé donc pas en *) from (mes deux tables) where Guilde_Membre="oui" (pour dire qu'il appartient à la guilde; c'est un champs appartenant à la table membres) ORDER BY (là je veux deux paramètres : le champs Nom_Membre de la table membres en DESC mais aussi le champ position_rang de la table guilde_rang)"...
Donc en gros un select avec deux ORDER BY qui sont dans deux tables différentes...
Si quelqu'un avait une petite idée à me suggérer s'il vous plaît ^^
Je précise que j'ai vu qu'il faut mettre le nom de la table avant le champs lorsqu'on lance le SELECT (ex : "select membres.Nom_Membre"), qu'il faut ensuite donner les deux tables après le FROM (ex : "from membres, guilde_rang") et qu'ensuite il faut indiquer encore la table du champs dans le ORDER BY (ex : "ORDER BY membres.Nom_Membre")
Merci d'avance !
EDIT : n'hésitez pas à me demander des précisions c'est complexe ou confus ce que j'ai noté !
Re: [mysql - php] plusieurs tables pour un select ORDER BY
Citation:
Envoyé par sanosuke85
Je précise que j'ai vu qu'il faut mettre le nom de la table avant le champs lorsqu'on lance le SELECT (ex : "select membres.Nom_Membre"), qu'il faut ensuite donner les deux tables après le FROM (ex : "from membres, guilde_rang") et qu'ensuite il faut indiquer encore la table du champs dans le ORDER BY (ex : "ORDER BY membres.Nom_Membre")
Non, ce n'est nécessaire que lorsque tu veux différencier les clefs, ça s'appelle des ALIAS. "nom" et "position" sont deux champs que tu ne retrouves pas dans plusieurs tables, donc pas de risque d'ambiguité pour le SGBD.
Sinon moi je te propose (à tester) :
Code:
1 2 3 4 5 6 7
|
select nom,mail,position,MEMBRE.guilde_rang from MEMBRE,GUILDE_RANG
where MEMBRE.guilde_rang IN (
select guilde_rang from GUILDE_RANG)
and MEMBRE.guilde_rang=GUILDE_RANG.guilde_rang
order by 1 DESC, 3 DESC; |