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 :

Requête SQL pour associer 2 résultats


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Requête SQL pour associer 2 résultats
    Bonjour
    je suis débutant dans l'utilisation de requête et je me retrouve confronter au problème suivant: Dans une table j'ai la colonne nom,date,vibration. par une requête je souhaite connaitre pour chaque nom le max de vibration et à quelle date cela à eu lieu.
    Pour connaitre le max : SELECT name,max(VIBRATION) FROM db group by NAME

    mais je ne vois pas comment retrouver la date associée.

    Si quelqu'un a une idée voir même le solution je suis preneur

    Merci d'avance

    Ciao

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 099
    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 099
    Points : 28 397
    Points
    28 397
    Par défaut
    C'est une question qui est posée très régulièrement sur ce forum.

    La réponse peut s'obtenir de plusieurs manières, dont celle-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT  tbl.name
        ,   tbl.vibration
        ,   tbl.date
    FROM    db  tbl
    WHERE   EXISTS
            (   SELECT  NULL
                FROM    db  sel
                WHERE   tbl.name        = sel.name
                HAVING  tbl.vibration   = MAX(sel.vibration)
            ) 
    ;

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 4
    Points : 3
    Points
    3
    Par défaut MERCI
    cela fonctionne comme souhaité

    Merci bien

  4. #4
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 4
    Points : 3
    Points
    3
    Par défaut un petit plus
    si je veux avoir la moyenne et le compteur d'utilisation où je dois insérer cette demande (avg(vibration) et count(*) ) ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    SELECT  tbl.name
        ,   tbl.vibration
        ,   tbl.date
    FROM    db  tbl
    WHERE   EXISTS
            (   SELECT  NULL
                FROM    db  sel
                WHERE   tbl.name        = sel.name
                HAVING  tbl.vibration   = MAX(sel.vibration)
            ) 
    ;
    ;
    Merci

  5. #5
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 099
    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 099
    Points : 28 397
    Points
    28 397
    Par défaut
    Ce n'est plus du tout le même besoin...
    donc pas non plus le même modèle de requête !
    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
    SELECT  tbl.name
        ,   tbl.vibration
        ,   tbl.date
        ,   sel.moy
        ,   sel.cpt
    FROM    db  tbl
        INNER JOIN
            (   SELECT  grp.name
                    ,   MAX(grp.vibration)  AS mxm
                    ,   AVG(grp.vibration)  AS moy
                    ,   COUNT(*)            AS cpt
                FROM    db  grp
                GROUP BY grp.name
            )   sel
            ON  sel.name    = tbl.name
            AND sel.mxm     = tbl.vibration
    ;

  6. #6
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    cool

    cela marche du tonnerre. Merci bien

    Ciao

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

Discussions similaires

  1. [MySQL] Imbriquer deux requêtes sql pour avoir un seul résultat
    Par Alexcontact dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 07/05/2014, 15h56
  2. Réponses: 3
    Dernier message: 09/10/2009, 20h20
  3. Quelle requête SQL pour obtenir mon résultat ?
    Par nicolas.pied dans le forum Requêtes
    Réponses: 2
    Dernier message: 03/02/2007, 09h58
  4. problème de requète SQL pour formulaire
    Par en_stage dans le forum Requêtes et SQL.
    Réponses: 15
    Dernier message: 21/06/2005, 12h21
  5. Requêtes SQL pour access
    Par cciocc dans le forum Langage SQL
    Réponses: 5
    Dernier message: 25/04/2005, 08h45

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