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

SQL Firebird Discussion :

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


Sujet :

SQL Firebird

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 945
    Points : 123
    Points
    123
    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 retraité
    Inscrit en
    Janvier 2007
    Messages
    15 030
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 030
    Points : 40 928
    Points
    40 928
    Billets dans le blog
    62
    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
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 945
    Points : 123
    Points
    123
    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 retraité
    Inscrit en
    Janvier 2007
    Messages
    15 030
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 030
    Points : 40 928
    Points
    40 928
    Billets dans le blog
    62
    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 !
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 945
    Points : 123
    Points
    123
    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, 13h30
  2. Réponses: 6
    Dernier message: 17/04/2013, 18h20
  3. Réponses: 7
    Dernier message: 09/01/2009, 13h22
  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, 10h33
  5. Réponses: 3
    Dernier message: 21/05/2007, 17h34

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