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

MS SQL Server Discussion :

Requête impossible à trouver


Sujet :

MS SQL Server

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 4
    Par défaut Requête impossible à trouver
    Bonjour,

    ça fait plus de 24h que je me prend la tête pour une requête, voila mon problème :
    J'ai une table MEMBRE(id, login, adress) qui est lié à une table PROP(id, membre_id, resultat_id) qui est lié à RESULTAT(id, resultat).

    Donc un membre peut avoir un ou plusieurs résultats, ce que j'aimerais c'est de récupérer chaque membre avec son meilleur résultat, et le tout trié par résultats DESC. A chaque fois j'ai un problème, soit j'ai plusieurs fois le même membre qui apparait, soit le tri ne marche pas...

    Merci pour votre aide

  2. #2
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    Bonjour,

    Pouvez vous nous donner un jeu de données svp

    Merci

    ++

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 4
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    INSERT INTO MEMBRE(mmbr_id, mmbr_login, mmbr_city) VALUES(1, 'toto', 'PARIS');
    INSERT INTO MEMBRE(mmbr_id, mmbr_login, mmbr_city) VALUES(2, 'titi', 'LYON');
    INSERT INTO MEMBRE(mmbr_id, mmbr_login, mmbr_city) VALUES(3, 'tutu', 'MARSEILLE');
     
    INSERT INTO PROP(prop_id, mmbr_id, resultat_id) VALUES(1, 1, 1);
    INSERT INTO PROP(prop_id, mmbr_id, resultat_id) VALUES(2, 1, 2);
    INSERT INTO PROP(prop_id, mmbr_id, resultat_id) VALUES(3, 1, 3);
    INSERT INTO PROP(prop_id, mmbr_id, resultat_id) VALUES(4, 2, 4);
    INSERT INTO PROP(prop_id, mmbr_id, resultat_id) VALUES(5, 2, 5);
    INSERT INTO PROP(prop_id, mmbr_id, resultat_id) VALUES(6, 3, 6);
     
    INSERT INTO RESULTAT(resultat_id, resultat) VALUES(1, 100);
    INSERT INTO RESULTAT(resultat_id, resultat) VALUES(2, 100);
    INSERT INTO RESULTAT(resultat_id, resultat) VALUES(3, 99);
    INSERT INTO RESULTAT(resultat_id, resultat) VALUES(4, 100);
    INSERT INTO RESULTAT(resultat_id, resultat) VALUES(5, 98);
    INSERT INTO RESULTAT(resultat_id, resultat) VALUES(6, 52);
    Ah oui et si le membre a son meilleur résultat égale à 100 par exemple comme toto, je veux récuperer une seule ligne dans mes résultats et non deux (alors que toto a obtenu deux fois 100)
    Voila par exemple un bout de table, merci!

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 4
    Par défaut
    Ca yest jai enfin trouvé comment faire!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT * FROM(
    SELECT MEMBRE.mmbr_id, MEMBRE.mmbr_login, MAX(RESULTAT.resultat) AS result
    FROM MEMBRE INNER JOIN PROP ON MEMBRE.mmbr_id = PROP.mmbr_id INNER JOIN RESULTAT ON PROP.resultat_id = RESULTAT.resultat_id
    GROUP BY MEMBRE.mmbr_id, MEMBRE.mmbr_login) AS REQ
    ORDER BY REQ.result DESC
    Merci!!

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Le select extérieur peut être évité, il n'apporte rien.
    Je vous conseil dès que vous avez plus d'une table d'utiliser systématiquement des alias de table : ça allège la requête et la rend plus lisible.
    Préfixez également le nom de vos tables par le nom du schéma.

    Votre requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      SELECT mm.mmbr_id, mm.mmbr_login,
             MAX(rs.resultat) AS result
        FROM dbo.MEMBRE as mm
             INNER JOIN dbo.PROP as pp
               ON pp.mmbr_id = mm.mmbr_id
             INNER JOIN dbo.RESULTAT as rs
               ON rs.resultat_id = pp.resultat_id
    GROUP BY mm.mmbr_id, mm.mmbr_login
    ORDER BY result desc;

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

Discussions similaires

  1. [Requête] Impossible de faire fonctionner !
    Par Nesta92 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 17/04/2007, 09h38
  2. Images et requêtes impossible
    Par javaboy dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 16/02/2007, 12h01
  3. Impossible trouver Servlet 2.4 implémentat°
    Par Mynautor dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 22/01/2007, 11h34
  4. requête pour trouver un mot dans une phrase
    Par FRIGAUX dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 25/11/2006, 22h18

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