1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    avril 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : avril 2011
    Messages : 13
    Points : 11
    Points
    11

    Par défaut Sélection de la valeur MAX par ID

    Bonjour,

    Je sais que de nombreux sujets trainent à ce sujet, je viens de passer du temps dessus, mais malgré tout je n'arrive pas à obtenir ce que je souhaite, alors je me tourne vers vous.

    Je travaille sur une table contenant entre autres ces attributs : native_uid, top_depth, bottom_depth. Pour un même "native_uid" je peux avoir plusieurs TOP et BOTTOM_DEPTH et j'ai besoin de récupérer la valeur MAX(TOP_DEPTH) et MIN(BOTTOM_DEPTH) par native_uid.

    La dernière tentative que je viens de faire ressemble à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    select cur.native_uid, cur.top_depth
    from Table cur
    where not exists (
        select high.native_uid, high.top_depth 
        fromTable high 
        where high.native_uid = cur.native_uid 
        and high.top_depth > cur.top_depth
    );
    et en plus de ne pas être optimisée, elle ne renvoie pas du tout ce que je souhaite, elle renvoie toutes les données ^^,

    Je suis à court d'idées alors si jamais vous voyez une erreur ou connaissez une autre piste, je suis tout ouïe.

    Merci,
    Nico

  2. #2
    Expert éminent
    Homme Profil pro
    Développeur Freelance
    Inscrit en
    janvier 2009
    Messages
    3 189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Freelance

    Informations forums :
    Inscription : janvier 2009
    Messages : 3 189
    Points : 6 744
    Points
    6 744

    Par défaut

    Bonjour,
    A part si je n'ai pas compris la question, tu as donné la réponse:
    Citation Envoyé par Nicos6414 Voir le message
    MAX(TOP_DEPTH) et MIN(BOTTOM_DEPTH) par native_uid.
    Donc il suffit que ta requête renvoie MAX(TOP_DEPTH),MIN(BOTTOM_DEPTH),native_uid et regroupe comme il se doit sur la dernière colonne (qui ne fait pas l'objet d'une agrégation.

    Tatayo.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    avril 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : avril 2011
    Messages : 13
    Points : 11
    Points
    11

    Par défaut

    Merci pour la réponse @tatayo.

    C'est la première chose que j'avais fait seulement ça ne fonctionnait pas.
    Je viens de le refaire ce matin en ajoutant un distinct en plus du group by et j'obtiens enfin ce que je souhaite.

    Merci et bonne journée

  4. #4
    Expert éminent
    Homme Profil pro
    Développeur Freelance
    Inscrit en
    janvier 2009
    Messages
    3 189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Freelance

    Informations forums :
    Inscription : janvier 2009
    Messages : 3 189
    Points : 6 744
    Points
    6 744

    Par défaut

    Je ne vois pas trop pourquoi tu as besoin d'un DISTINCT ici.
    Vu que tu regroupes le résultat par native_uid, d'où sortent les doublons du résultat ?

    Tu peux nous donner un jeu d'essai pour lequel le distinct est "obligatoire" ?

    Tatayo.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    avril 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : avril 2011
    Messages : 13
    Points : 11
    Points
    11

    Par défaut

    J'ai complété ma requêtes avec d'autres champs, l'exemple que j'avais mis dans le sujet était une version simplifiée et en retravaillant la requête sans distinct j'obtiens ce que je souhaite.

    Je t'avoue qu'un group by + un distinct ça n'avait pas de sens.

    Encore merci.
    Nico

  6. #6
    Expert éminent
    Homme Profil pro
    Développeur Freelance
    Inscrit en
    janvier 2009
    Messages
    3 189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Freelance

    Informations forums :
    Inscription : janvier 2009
    Messages : 3 189
    Points : 6 744
    Points
    6 744

    Par défaut

    Tu n'utiliserais pas MySQL par hasard ? Car toutes les colonnes du SELECT qui ne font pas l'objet d'une agrégation doivent être dans la clause GROUP BY, donc tu ne peux pas avoir de doublon dans le résultat... sauf avec MySQL qui est plus que laxiste sur ce point.

    Tatayo.

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

Discussions similaires

  1. Valeur max par ligne
    Par NULL008 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 20/10/2016, 08h40
  2. [XL-2010] Valeur max par date
    Par calagan99 dans le forum Excel
    Réponses: 2
    Dernier message: 30/11/2011, 14h08
  3. Valeur Max d'un champ par défaut
    Par popoliline dans le forum Access
    Réponses: 2
    Dernier message: 01/09/2006, 18h30
  4. Réponses: 5
    Dernier message: 23/03/2006, 17h03
  5. Sélection d' une valeur max depuis 2 tables
    Par ipeteivince dans le forum Requêtes
    Réponses: 4
    Dernier message: 13/05/2005, 17h37

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