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 pôur sélectionner les 5 valeurs les plus grandes ?


Sujet :

Langage SQL

  1. #1
    Membre éclairé
    Avatar de kikidrome
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 861
    Points : 685
    Points
    685
    Par défaut requête pôur sélectionner les 5 valeurs les plus grandes ?
    bonjour
    Voici une table que j'ai construire avec une requête :

    je voudrais sélectioner uniquement, par FAMILLE (la 1ere colonne), les 5 codes danger (2ème colonne) pour lesquels NB sont les plus forts, triés par NB

    Est-ce possible ?

    ps : je suis novice en sql..

    merci

  2. #2
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 114
    Points : 31 609
    Points
    31 609
    Billets dans le blog
    16

  3. #3
    Membre éclairé
    Avatar de kikidrome
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 861
    Points : 685
    Points
    685
    Par défaut
    Citation Envoyé par fsmrel Voir le message
    Merci, j'essaie çà ce soir et je vous tiens au courant du résulat !
    (euh, je suis sous access, j'espère qu eca marche aussi )

  4. #4
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 114
    Points : 31 609
    Points
    31 609
    Billets dans le blog
    16
    Par défaut
    Ça marche aussi sous Access :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Select *
    FROM Danger AS x
    WHERE (Select Count (*)
           from  Danger as y
           where x.Famille = y.Famille
           and x.Nb < y.Nb) < 5
    ORDER BY Famille, Nb Desc ;
    Cela dit, si pour un novice en SQL vous mettez la barre un peu haut, décortiquez quand même la requête !

  5. #5
    Membre éclairé
    Avatar de kikidrome
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 861
    Points : 685
    Points
    685
    Par défaut


    Ca marche ! Il faut maintenant que j'essaie de comprendre comment fonctionne les requêtes imbriquées...
    Mille fois merci !

  6. #6
    Membre régulier

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 57
    Points : 70
    Points
    70
    Par défaut
    Bonjour et tout d'abord merci pour votre discussion constructive.
    Je suis actuellement sur le même problème que vous à la différence que lorsque j'ai des ex-aequo j'aimerais ne garder que le premier enregistrement ramené.
    Quelqu'un aurait-il une idée?

    Merci d'avance.

    Arnaud

  7. #7
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 114
    Points : 31 609
    Points
    31 609
    Billets dans le blog
    16
    Par défaut
    Citation Envoyé par arno a
    lorsque j'ai des ex-aequo j'aimerais ne garder que le premier enregistrement ramené
    C’est à vos risques et périls, car le résultat devient aléatoire. Mais si vous y tenez...
    Dans le cas d’Access, puisque c’est le SGBD utilisé par kikidrome, on peut par exemple modifier légèrement la requête, en concaténant les attributs Nb et Danger :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT Famille, Danger, Nb
    FROM Danger AS x
    WHERE (Select Count (*)
                From  Danger as y
                Where x.Famille = y.Famille
                And Str(x.Nb) + Str(x.Danger) < Str(y.Nb) + Str(y.Danger)) < 5
    ORDER BY Famille, Nb DESC;
    Les attributs Nb et Danger sont ici considérés comme de type Character. S’ils sont d’un autre type, passer d’abord par la conversion de type.
    On suppose que les couples {Nb, Danger} ne comportent pas de doublons, sinon il faut y remplacer Danger par exemple par la clé primaire de la table.

  8. #8
    Membre régulier

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 57
    Points : 70
    Points
    70
    Par défaut
    Merci beaucoup pour votre aide c'est exactement ce qu'il me fallait, j'obtiens maintenant les résultats désirés.

    Citation Envoyé par fsmrel Voir le message
    C’est à vos risques et périls, car le résultat devient aléatoire. Mais si vous y tenez...
    En effet le résultat devient aléatoire mais cela répond à la demande d'un client...
    En fait, l'idée du client est surtout de voir les ordres de grandeur entre les différents résultats.

    Merci encore,

    Arnaud.

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

Discussions similaires

  1. [XL-2003] MACRO pour rechercher les 2 valeurs les plus proches
    Par Tchibe dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 09/06/2010, 16h04
  2. Réponses: 6
    Dernier message: 04/11/2007, 23h15
  3. [MySQL] Extraire les 50 valeurs les plus proches d'un entier
    Par denis.ws dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 19/01/2007, 09h42
  4. c++ valeur la plus grande parmis les valeurs dun tableau
    Par corseb-delete dans le forum C++
    Réponses: 19
    Dernier message: 14/12/2006, 23h14

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