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 :

SQL - Group by


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 124
    Points : 61
    Points
    61
    Par défaut SQL - Group by
    Bonjour voici l'extrait d'une de mes tables

    table
    num | objet | prix
    234 | objet1 | 45
    235 | objet1 | 81
    356 | objet3 | 12
    890 | objet3 | 18
    999 | objet3 | 21

    Je cherche une requete.
    qui me resorte le prix de l'objet dont le num est le plus grand

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select max(num), objet, prix from table
    ne marche pas. J'imagine qu'il faut se servir d'un group by mais je ne suis pas tres doué la dedans.

    Quelqu'un a une idée svp?

  2. #2
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 644
    Points
    4 644
    Par défaut
    comme ceci?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select num,objet,prix from table
    where num =
    (select max(num) from table)

  3. #3
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Bonjour,

    Hein !

    @Cybher : ou quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    SELECT TOP 1
               num
              ,objet
              ,prix 
    FROM 
            TABLE
     
    ORDER BY num
                 ,objet
                 ,prix DESC
    ;

  4. #4
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 124
    Points : 61
    Points
    61
    Par défaut
    Re,

    Escusez moi je n'ai pas été assez clair dans ma demande. C'est ma faute car en me relisant , la requete que tu me proposes cybher répond au besoin exprimé. Mon soucis est que cette requete ramene qu'une seule ligne
    999 | objet3 | 21.

    Moi j'aimerai qu'il me ramene tous mes objets (1, 3 ...) avec le num le plus élevé.
    Ici ca donnerai
    235 | objet1 | 81
    999 | objet3 | 21

    J'ai essayé ta requete chtulus, mais le TOP 1 ca ne lui plait pas. Je ne connais pas cet objet...

    Voili voilou.
    Merci par avance

  5. #5
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 644
    Points
    4 644
    Par défaut
    comme ceci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select num,objet,prix from (select max(num),objet
    from table group by objet)

  6. #6
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 124
    Points : 61
    Points
    61
    Par défaut
    Je me croyais capable a partir d'un exemple reussir à reproduire mais non donc je suis désolé de faire mon boulet mais je vais vous donner ma vraie requete

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select glcon_num, glcon_numver, glruc_mnt from glruc where glrub_cod = 'XHGE'
    order by glcon_num
    "22687" "0" "155,85"
    "22687" "0" "150,33"
    "22687" "0" "167,14"
    "22687" "0" "169,96"
    "22688" "0" "117,63"
    "22688" "0" "130,78"
    "22688" "0" "121,95"
    "22688" "0" "132,99"
    "22689" "0" "105,45"
    "22689" "0" "113,09"


    Il me faut une seule occurence par glcon_num, glcon_numver et que cette occurence soit determiné sur le champ glruc_num qui n'apparait pas ici. Il faut prendre le plus grand GLRUC_NUM.

    Merci par avance

  7. #7
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Ben, quel est ton SGBD si TOP ne marche pas tu as peut-être à faire à... LIMIT ?


  8. #8
    Membre expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT 	glcon_num, 
    	glcon_numver, 
    	glruc_mnt 
    FROM 	glruc 
    WHERE	glruc_num IN
    (
    SELECT 	MAX(glruc_num) 
    FROM	glruc
    GROUP BY glcon_num, 
    	glcon_numver 
    )

  9. #9
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 124
    Points : 61
    Points
    61
    Par défaut
    Merci la requête donnée par TheLeadingEdge marche nickel.
    Pour répondre à chtulus ma base est sus oracle 10g.

    Par contre vu qu'on est dnas le sujet, j'aimerais compliqué un tout petit peu plus la requête.
    Ce qu'il faut savoir c'est que ma condition :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE glrub_cod = 'XHGE'
    fait qu'il n'existe pas toujours un GLRUC_MNT pour tous les couples GLCON_NUM, GLCON_NUMVER mais je voudrais qu'il me ramene tout de meme le champ GLRUC_MNT à NULL dans ce cas la.
    Jointure externe mais comment? J'ai fait quelques tests sans succès.

    Merci par avance.

  10. #10
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Bonsoir,

    Oracle ne connais pas le COALESCE je crois, mais utilise le REPLACE...

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

Discussions similaires

  1. SQL GROUP BY intervalle de date
    Par Junior_jef dans le forum Requêtes et SQL.
    Réponses: 11
    Dernier message: 26/04/2007, 15h53
  2. Petit problème SQL (GROUP BY|ORDER BY)
    Par kalash_jako dans le forum Langage SQL
    Réponses: 4
    Dernier message: 09/04/2007, 23h17
  3. [SQL] Group by + SUM + Min
    Par Deejoh dans le forum Langage SQL
    Réponses: 1
    Dernier message: 07/11/2006, 15h46
  4. [Access] Requète SQL Group By, Order By and Co
    Par zoidy dans le forum Langage SQL
    Réponses: 4
    Dernier message: 09/06/2006, 14h37
  5. [SQL] Group By
    Par lapartdombre dans le forum Langage SQL
    Réponses: 3
    Dernier message: 12/01/2006, 17h06

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