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
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 4
    Points : 2
    Points
    2
    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 éminent sénior
    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 : 45
    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
    Points : 12 891
    Points
    12 891
    Par défaut
    Bonjour,

    Pouvez vous nous donner un jeu de données svp

    Merci

    ++

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

    Informations forums :
    Inscription : Octobre 2010
    Messages : 4
    Points : 2
    Points
    2
    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
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 4
    Points : 2
    Points
    2
    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 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    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 453
    Points : 18 388
    Points
    18 388
    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