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

Access Discussion :

Requete SELECT TOP 4 retourne 5 lignes ! [AC-2016]


Sujet :

Access

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2018
    Messages : 150
    Points : 63
    Points
    63
    Par défaut Requete SELECT TOP 4 retourne 5 lignes !
    Bonjour, voici une requête Access sensée sélectionner les 4 1er enregistrements d'une table. Si je ne spécifie pas de "ORDER BY" , tous fonctionne bien, par contre si je met "ORDER BY STK-DENT" la requête retourne une ligne supplémentaire !
    Je ne comprend pas très bien...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT TOP 4 STOCKS_CONGELES.STK_CODE, STOCKS_CONGELES.ART_CODE, STOCKS_CONGELES.STK_DENT, STOCKS_CONGELES.STK_NUMPAL, STOCKS_CONGELES.STK_PICKING, FICHES_ARTICLES.ART_LIBELLE1, STOCKS_CONGELES.STK_PBRUT, STOCKS_CONGELES.STK_TPAL, STOCKS_CONGELES.STK_TCART, STOCKS_CONGELES.STK_PNET, STOCKS_CONGELES.STK_LOT1, STOCKS_CONGELES.STK_LOT2, STOCKS_CONGELES.STK_LOT3, STOCKS_CONGELES.STK_LOT4, STOCKS_CONGELES.STK_LOT5, STOCKS_CONGELES.STK_LOT6, STOCKS_CONGELES.STK_DATECONG, STOCKS_CONGELES.STK_DLUO, STOCKS_CONGELES.STK_OUTDATE
    FROM FICHES_ARTICLES INNER JOIN STOCKS_CONGELES ON FICHES_ARTICLES.ART_CODE = STOCKS_CONGELES.ART_CODE
    WHERE (((STOCKS_CONGELES.STK_PICKING)<>"") AND ((FICHES_ARTICLES.ART_LIBELLE1)="CŒUR") AND ((STOCKS_CONGELES.STK_OUTDATE) Is Null))
    ORDER BY STK_DENT ASC;
    Nom : Capture.PNG
Affichages : 147
Taille : 20,5 Ko

  2. #2
    Membre éprouvé

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Novembre 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 904
    Points : 1 229
    Points
    1 229
    Par défaut
    Bonjour

    Le prédicat 'TOP n' permet de retenir les n premiers enregistrements sur LE champ trié. L’ordre croissant donne les n plus petites valeurs et le décroissant les n plus grandes.
    Mais si des valeurs sont égales à une des n, il renvoie tous les enregistrements correspondants.

    Dans ton cas, il fait un TOP 4 sur les valeurs les plus petites. Or, STK_DENT a les 4ème et 5ème valeurs identiques. Donc 5 résultats.

  3. #3
    Membre régulier Avatar de Le Migge
    Homme Profil pro
    Retraité (actif!)
    Inscrit en
    Février 2018
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité (actif!)
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2018
    Messages : 62
    Points : 98
    Points
    98
    Par défaut Obtenir les 4 valeurs demandées
    titi95 explique bien le "prédicat TOP" qui ne donne le TOP 4 que s'il n'y a pas de doublons dans le champ trié.

    Or, il semble que STK_CODE est dans le même ordre que STK_DENT (code attribué chronologiquement ?)

    Si c'est toujours le cas et si STK_CODE ne peut contenir de doublons, pourquoi ne pas trier sur STK_CODE? Ce qui donnerait 4 lignes.

    Une autre méthode serait d'avoir dans STK_DENT la date et l'heure d'entrée de l'enregistrement (mettre valeur par défaut de STK_DENT = Maintenant() ), ce qui éliminerait pratiquement les doublons.

    Simples suggestions mais je ne suis pas dans ta base!

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

Discussions similaires

  1. [MySQL] requete SELECT retournant une seule ligne
    Par hermann.geiger dans le forum SGBD
    Réponses: 12
    Dernier message: 19/09/2008, 08h34
  2. determiner si une requete retourne des lignes
    Par sundjata dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 25/07/2006, 00h19
  3. [Oracle 9] Requete selection top 5
    Par Le Mad dans le forum Langage SQL
    Réponses: 11
    Dernier message: 19/02/2006, 17h29
  4. [MySQL] Pb requete SELECT top mssql
    Par crevettepourrie dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 05/01/2006, 16h36
  5. Afficher le numéro de ligne dans une requete SELECT
    Par tilb dans le forum Langage SQL
    Réponses: 4
    Dernier message: 01/09/2004, 10h20

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