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

Langage SQL Discussion :

Récuperer une seule ligne de résultat sur plusieurs


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 13
    Points : 15
    Points
    15
    Par défaut Récuperer une seule ligne de résultat sur plusieurs
    Pour mon BTS, j'ai une épreuve à faire qui s'occupe de la gestion d'un forum.

    Il me faut une requete qui sélectionne l'utilisateur qui a le plus poster dans une salle, et si il y en a plusieurs au meme nombre de message poster, qu'il prenne celui qui est inscrit avant (identifiant plus faible).

    j'ai fait cette requete pour répondre au premier cas, mais je n'arrive pas à faire pour qu'il sélectionne celui qui a l'identifiant le plus bas si il y a plusieurs résultats.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT id_auteur 
    from message 
    group by id_auteur 
    HAVING COUNT(id_message)=
    (SELECT MAX(COUNT(id_message)) 
    FROM message 
    WHERE id_salle=2 
    group by id_auteur);
    Je vous supplie de m'aider car cela fait trois heures de temps maintenant que je me prends la tete dans tous les sens avec des MIN, LEAST, ROWNUM, infructueux évidemment !

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 108
    Points : 28 420
    Points
    28 420
    Par défaut
    Il semble que tu as fait le plus gros du travail
    Si ton SGBD accepte la requête que tu présentes (tous n'acceptent pas l'imbrication de deux fonctions de regroupement comme MAX(COUNT())), il ne reste plus qu'à en rajouter une couche...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT  MIN(id_auteur)
    FROM    
        (   SELECT  id_auteur
            FROM    message
            GROUP BY id_auteur
            HAVING  COUNT(id_message) =
                    (   SELECT  MAX(COUNT(id_message))
                        FROM    message
                        WHERE   id_salle = 2
                        GROUP BY id_auteur
                    )
        );

  3. #3
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 13
    Points : 15
    Points
    15
    Par défaut
    Ah ouaiiiiiiis !!!


    Merci infiniment ! Ca carbure !

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 08/01/2013, 11h03
  2. Réponses: 1
    Dernier message: 23/04/2012, 11h57
  3. [MySQL] affichage d'une seule ligne du résultat requete
    Par mikael2235 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 19/01/2010, 10h13
  4. Plusieurs résultats mis à plat sur une seule ligne.
    Par Laurent.B dans le forum Langage SQL
    Réponses: 7
    Dernier message: 13/10/2009, 11h58
  5. Plusieurs résultats sur une seule ligne
    Par Morphorpse dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/08/2007, 19h36

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