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

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mars 2010
    Messages
    633
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : mars 2010
    Messages : 633
    Points : 196
    Points
    196

    Par défaut Récupérer les dernières lignes par code produit.

    Bonjour,

    J'ai une Table Vente, contenant les champs suivant (date vente,code produit, qte,p.u.vente) et je voudrais récupérer les dernières opérations pour chaque produit exple
    date vente code produit qte p.u.vente
    15/01/2018 0001 15.55 300.00
    16/01/2018 0002 13.20 1150.00
    16/01/2018 0003 11.00 100.00
    17/01/2018 0004 15.42 115.00
    ...
    ...
    ect...

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    9 703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 9 703
    Points : 23 588
    Points
    23 588
    Billets dans le blog
    16

    Par défaut

    Bonjour,

    Firebird 3 permettrait certainement une fonction de fenêtrage, sinon dans les versions précédentes quelque chose comme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    WITH  L AS (SELECT CODEPRODUIT P,MAX(DATEVENTE) D FROM VENTE GROUP BY CODEPRODUIT) 
     
    SELECT V.CODEPRODUIT,V.DATEVENTE,V.QTE,V.PUVENTE FOM VENTE V JOIN L ON V.CODEPRODUIT=L.P AND V.DATEVENTE=L.D
    en espérant que la table contient un index correct, devrait fonctionner
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein

    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Berlin, Tokyo) et peut être quelques autres
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mars 2010
    Messages
    633
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : mars 2010
    Messages : 633
    Points : 196
    Points
    196

    Par défaut

    Bonjour,

    le code récupère tout les enregistrements de la dernière date pour un produit donné, par contre je voudrais récupéré pour chaque produit le dernier enregistrement saisie.

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    9 703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 9 703
    Points : 23 588
    Points
    23 588
    Billets dans le blog
    16

    Par défaut

    Pardon

    la CTE récupère bien la date maximum pour chaque produit et , subséquemment, la jointure permet de n'obtenir que les éléments correspondants
    toutefois, s'il n'y a pas d'identifiant unique, je conseille d'utiliser la jointure inverse de celle que j'ai écrite (L JOIN VENTE) ce qui améliorera grandement la vitesse

    Le code, comme vous dites, n'est certainement pas fait avec vos noms de colonnes donc, il serait peut-être bon que vous indiquiez quel code vous avez réellement écrit avant tout !
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein

    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Berlin, Tokyo) et peut être quelques autres
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  5. #5
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mars 2010
    Messages
    633
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : mars 2010
    Messages : 633
    Points : 196
    Points
    196

    Par défaut

    ah c'est ma faute, la clé champs "ordre"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    WITH  L AS (SELECT CODEPRODUIT P,MAX(ORDRE) D FROM VENTE GROUP BY CODEPRODUIT) 
     
    SELECT V.CODEPRODUIT,V.DATEVENTE,V.QTE,V.PUVENTE FOM VENTE V JOIN L ON V.CODEPRODUIT=L.P AND V.ORDRE=L.D
    et ça marche. merci.

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

Discussions similaires

  1. Récupérer les dernières lignes affichées
    Par HoliCApplet dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 09/02/2015, 14h30
  2. Réponses: 6
    Dernier message: 17/04/2013, 19h20
  3. Réponses: 7
    Dernier message: 09/01/2009, 14h22
  4. Récupérer les dernières lignes modifiées
    Par Mythrandil dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 05/06/2007, 11h33
  5. Réponses: 3
    Dernier message: 21/05/2007, 18h34

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