IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

[mysql - php] plusieurs tables pour un select ORDER BY


Sujet :

Requêtes MySQL

  1. #1
    Inscrit Avatar de sanosuke85
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 206
    Points : 179
    Points
    179
    Par défaut [mysql - php] plusieurs tables pour un select ORDER BY
    Oyo à tous !

    (petit bonjour à Mr N. et Siddh au passage )

    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é !

  2. #2
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT m.nom_membre, g.position_rang
    FROM membres AS m INNER JOIN guilde_rang AS g
       ON (m.guilde_rang_membre = g.id_rang AND m.guilde_membre = 1)
    ORDER BY m.nom_membre, g.position_rang

  3. #3
    Inscrit Avatar de sanosuke85
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 206
    Points : 179
    Points
    179
    Par défaut
    Ok je teste ça demain et je te dis si ça marche ou pas


  4. #4
    Membre confirmé Avatar de KibitO
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2004
    Messages
    616
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2004
    Messages : 616
    Points : 606
    Points
    606
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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;

  5. #5
    Inscrit Avatar de sanosuke85
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 206
    Points : 179
    Points
    179
    Par défaut


    (ps l'utilisation des smileys est dangereux pour la santé )

    Merci ça marche nickel !! Toujours fidèle à toi même tu es l'homme de la situation Mr N. hehe

    Bon par contre moins drôle faut que je vois comment ça marche, du moins comprendre le fonctionnement... D'ailleurs j'ai un peu cherché sur google mais j'ai pas trouvé grand-chose sur le INNER JOIN comme tutorial clair et simple...

    Merci encore!!!

    EDIT : merci kibito pour ta réponse mais j'ai posté avant de la lire

  6. #6
    Membre confirmé Avatar de KibitO
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2004
    Messages
    616
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2004
    Messages : 616
    Points : 606
    Points
    606
    Par défaut
    Ok lol. Tu pourras toujours tester. 8)

  7. #7
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    salut sanosuke, tu devrais pouvoir trouver des tutos dans la zone sql du site.
    Au pire tu vas voir dans la zone oracle, meme si tu utilise mysql car inner, outer et les autres join sont standard

    Tu peux mettre plusieurs conditions dans un order by et meme ne pas les mettre toutes dans le meme ordre, du genre :
    ORDER BY nom, prenom DESC,age

    ca ca ordonnera d'abord par nom croissant puis en cas d'égalité par prénom décroissant puis si meme nom et prenom par age croissant.


  8. #8
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    D'ailleurs j'ai un peu cherché sur google mais j'ai pas trouvé grand-chose sur le INNER JOIN comme tutorial clair et simple...
    http://www.mysql.com/join
    Après c'est le principe de la jointure, et les cours de SGBD sont utiles ^^

  9. #9
    Inscrit Avatar de sanosuke85
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 206
    Points : 179
    Points
    179
    Par défaut
    Ok merci à tous

    Oyo siddh ça fait un tit moment hehe

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par sanosuke85
    Bon par contre moins drôle faut que je vois comment ça marche, du moins comprendre le fonctionnement... D'ailleurs j'ai un peu cherché sur google mais j'ai pas trouvé grand-chose sur le INNER JOIN comme tutorial clair et simple...
    rien de tel qu'un bon petit bouquin bien gros sur les bases de données, c'est un peu long à digérer je te l'accorde, mais après, tu retrouve vite tes moutons quand tu cherches un truc précis :p

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Selection dans plusieurs tables pour constituer un seul RecordSet
    Par mesken dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 15/10/2011, 22h25
  2. Réponses: 7
    Dernier message: 17/03/2007, 14h52
  3. datagrid avec plusieurs tables pour source
    Par sundjata dans le forum Accès aux données
    Réponses: 4
    Dernier message: 20/11/2006, 10h27
  4. Requete MySQL sur plusieurs tables
    Par romulus67 dans le forum Requêtes
    Réponses: 10
    Dernier message: 03/07/2006, 18h45
  5. Joindre plusieurs tables pour en former qu'une seule.
    Par timeout dans le forum Requêtes
    Réponses: 7
    Dernier message: 19/09/2005, 10h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo