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 :

Requete select fifo


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2013
    Messages : 7
    Par défaut Requete select fifo
    Bonjour,
    je suis en train de faire un logiciel pour calculer la dépréciation de stock en méthode fifo
    mais je suis bloquer sur ma requete select.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select s.no_art,s.no_art_new,s.art_descr,s.casier,s.pmp,s.qte_stock,s.qte_res_ate,s.qte_res_mag,s.genre,s.date_min_dlc,l.appro_date,l.appro_qte,l.appro_pa,s.ventil_no FROM stoc_r s,laa_r l WHERE  s.no_art = l.no_art AND appro_date = (select max(APPRO_DATE) from laa_r) AND QTE_STOCK > '0' OR replace(s.no_art_new,s.no_art) is null  ORDER BY appro_date DESC
    quand je fais comme ça il me récupere toutes les dates d'appro pour la même référence donc se qu'il me fait plus 10000 lignes au lieu de 1000.Je suis sur deux tables
    une avec mais références,quantiter en stock et l'autre avec les références,les date d'appro et les quantiter d'appro.
    je pense que je suis loin du compte pour le faire en fifo si vous avez une idée.

    Merci

  2. #2
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Salut,

    l'expression "dépréciation de stock en méthode fifo" me parle pas pour un sou (on code pas tous pour le même métier).
    Sinon de ce que j'ai compris tu as deux tables :
    - stock { id_article, quantite_stock }
    - appro { id_article, date_appro, quantite_appro }
    J'ai bon ?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2013
    Messages : 7
    Par défaut
    Salut
    Oui c'est ça par contre je sais pas si id article est la clé primaire est-ce que ça fait une différence ou pas
    Je voudrais récupérer les dates d'appro et les quantités appro par rapport à mon stock qui correspond à la table stoc r.
    Admettons que j'ai une référence avec 30 en stock et que j'ai rentré 10 le 18/02/2105 a 5€ et que j'en rentre 20 le 16/09/2015 a 6€.il faudrait qu'il me le mette sur deux lignes

  4. #4
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Pour les tables j'ai simplifié pour voir si j'avais compris

    Sinon je suis toujours pas bien sûr d'avoir compris le résultat recherché.
    Tu veux obtenir le quantité "virtuelle" du stock pour une date donnée ?
    Disons que tu as dans stock :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    | article  | quantité |
    ----------------------
    | boulon   |       30 |
    Et dans ta table reappro
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    | article  | quantité |    date    |
    ---------------------------------
    | boulon   |       10 | 17/09/2015 |
    | boulon   |       20 | 21/09/2015 |
    Et tu aimerais obtenir ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    | article  | quantité |    date    |
    ---------------------------------
    | boulon   |       40 | 17/09/2015 | <-- 10 de reappro + 30 du stock
    | boulon   |       60 | 21/09/2015 | <-- 20 de reappro + 40 du stock mise à jour

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2013
    Messages : 7
    Par défaut
    Nom : Capture 1.PNG
Affichages : 446
Taille : 2,9 Ko Mon stock actuelle


    Nom : Capture 2.PNG
Affichages : 439
Taille : 5,0 Ko

    Donc je voudrais qu'il me récupére les deux première lignes qui correspond au dernière date d'entrée car sa correspond a mon stock actuelle mais
    il faut que je l'ai sur deux lignes parce que le prix n'est pas le même sur cette référence et que quand j'additionne les deux ça correspond a mon stock actuelle et si j'en vend 20 il faudra qu'a ma prochaine requête il me prenne que la dernière entrée en stock

  6. #6
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Encore une petite mise en situation pour voir si j'ai bien compris :
    imaginons que dans ton exemple au lieu de 10, 20, 15 tu aies 10, 15, 20 (avec toujours le même stock de 30),
    alors tu voudrais afficher 3 lignes :
    - les 10 du 19/06/15
    - les 15 du 10/04/2015
    - les 5 (sur les 20 du réappro mais qui suffisent à complèter ton stock de 30) du 08/10/14
    C'est bien ça ?
    Si oui je pense qu'il va falloir passer par du PL/SQL (ou un autre langage de prog si tu en as la possibilité),
    pas sûr que ce soit faisable avec une simple requête.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2013
    Messages : 7
    Par défaut
    Oui c'est ça il faudrai qu'il me prenne sur les trois dernières entrées pour faire 30 qui correspond à mon stock actuel et si après j'en vends 5 il faut qu'il me prenne que les deux autre

  8. #8
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Tu as accès à un langage "évolué" pour traiter ton besoin, ou utiliser SQL est une contrainte forte ?

  9. #9
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2013
    Messages : 7
    Par défaut
    J'utilise sql par contre c'est une base oracle je sais pas si ça change quelque chose

  10. #10
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 772
    Billets dans le blog
    10
    Par défaut
    Que la base soit Oracle ne change rien à l'affaire, ce serait effectivement plus simple avec un langage de programmation
    - pour répondre au problème de couverture du stock avec n lignes d'approvisionnement dont éventuellement on ne prend qu'une partie de la quantité
    - pour répondre au problème éventuel de stock supérieur à la somme des lignes d'approvisionnement

  11. #11
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 039
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 039
    Billets dans le blog
    6
    Par défaut
    Il faut utiliser une fonction de fenêtrage SUM(qté stock) OVER(ORDER BY...) et s'arrêter dès que cette info dépasse la quantité demandé.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  12. #12
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2013
    Messages : 7
    Par défaut
    je fait mon programme en vb.net
    par exemple si je fais cette requête pour récupéré mes références avec la dernière date d'appro il me récupère toutes les dates d'entrée pour toutes les références depuis le début au lieu de me prendre justes la dernière date ou les deux suivant ma quantité en stock réelle.
    après si j'arrive à récupéré les trois dernière dates pour cette référence je devrais pouvoir faire le tri par le code le souci c'est que je n'est pas besoin de récupéré les trois dernière pour toutes les références certaines ce sera deux d'autre une etc...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Select s.no_art
    ,no_art_new
    ,art_descr
    ,casier
    ,pmp
    ,qte_stock
    ,qte_res_ate
    ,qte_res_mag
    ,genre
    ,date_min_dlc
    ,appro_date
    ,appro_qte
    ,appro_pa FROM stoc_r S,laa_r L
     WHERE l.no_art = s.no_art 
    AND QTE_STOCK > '0'
    AND APPRO_DATE =(select max(APPRO_DATE) from laa_r)
    ORDER BY appro_date DESC
    Bonjour,
    sql pro je viens juste de voir ton message aurai tu un exemple car j'ai essayer plusieur chose mais la je m'en mêle les pinceaux.
    merci

  13. #13
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 039
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 039
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par ines29 Voir le message
    sql pro je viens juste de voir ton message aurai tu un exemple car j'ai essayer plusieur chose mais la je m'en mêle les pinceaux.
    merci
    Commencez par respecter la charte de postage en postant le DDL de vos tables ainsi qu'un jeu d'essais et le résultat attendu :
    http://www.developpez.net/forums/a69...gage-sql-lire/

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  14. #14
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2013
    Messages : 7
    Par défaut
    comment tu fais pour avoir le ddl de la table étant donnée que la base de données c'est celle du boulot est que je ne c'est comment faire
    je ne voudrais par faire n'importe quoi.

    merci

  15. #15
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 039
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 039
    Billets dans le blog
    6
    Par défaut
    Tous les SGBDR permettent cela. Sans le nom de votre SGBDR difficile de vous dire comment faire !

    Bref, respectez la charte de postage !!!

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. SQL server 7.0 requete select
    Par sangokus dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 10/03/2004, 11h09
  2. pbl delphi requete SELECT
    Par Rico l'abricot dans le forum Bases de données
    Réponses: 3
    Dernier message: 16/02/2004, 09h15
  3. Requete select pour récupérer les no match entre 2 tables
    Par Celina dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 16/12/2003, 11h59
  4. problemes de performances avec les requetes select
    Par berry dans le forum Requêtes
    Réponses: 3
    Dernier message: 10/07/2003, 13h39
  5. requete SELECT avec un nombre constant
    Par gurumeditation dans le forum Requêtes
    Réponses: 3
    Dernier message: 04/07/2003, 20h04

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