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 :

Requête avec select max sur 3 tables


Sujet :

Requêtes MySQL

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Requête avec select max sur 3 tables
    Bonjour,

    Je suis chargé d'analyser les résultats des élections régionales. J'ai 3 tables :

    - villes (id, nom)
    - listes (id, nom)
    - resultats (id, id_ville, id_liste, voix)

    Je voudrais connaître la liste qui a fait le meilleur score dans chaque ville et ensuite afficher ces villes en selectionnant une liste. En clair, je voudrais connaître les villes dans lesquelles une liste a fait les meilleurs résultats.
    Le problème, c'est que je sèche complétement sur la requête. J'arrive à selectionner le max(voix) dans chaque ville mais je n'arrive pas en même temps à afficher le nom de la liste.

    En résumé, je veux connaître toutes les villes dans lesquelles la liste X par exemple arrive en tête...

    Si quelqu'un pouvait m'aider...

    D'avance merci !

  2. #2
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Saluton,
    J'avoue que ta demande m'a posé des soucis.
    On veut obtenir les noms des villes pour lesquelles une liste donnée (qui sera passée en paramètre à la requête) a obtenu le score (colonne voix) le plus élevé.
    La solution que j'ai construite passe par deux niveaux de sous-requêtes.
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT v.nom ville, l.nom liste,r.voix
    FROM resultats r
    INNER JOIN villes v 
            on v.id=r.id_ville
    inner join listes l 
            on l.id=r.id_liste
    INNER JOIN (SELECT max(ssr.voix) score,ssr.idville
                from(SELECT sssr.voix,sssr.id_ville
                     from resultats sssr) ssr
                group by ssr.id_ville) sr
            on sr.id_ville=r.id_ville
               and sr.score=r.voix
    WHERE r.id_liste=$idliste
    Je n'ai pas testé, mais je crois être dans le vrai.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

Discussions similaires

  1. une requête avec 2 count sur la même table
    Par epeichette dans le forum Requêtes
    Réponses: 11
    Dernier message: 30/06/2009, 09h19
  2. Réponses: 5
    Dernier message: 10/06/2009, 11h01
  3. Réponses: 2
    Dernier message: 26/11/2008, 09h43
  4. Une requête avec un Max sur 2 champs
    Par Bils dans le forum Langage SQL
    Réponses: 4
    Dernier message: 17/09/2007, 14h04
  5. [Oracle] Plusieurs select max() sur plusieurs tables
    Par Xavier2701 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 14/06/2006, 17h36

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