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 :

consommation d'un article


Sujet :

Langage SQL

  1. #1
    Membre confirmé Avatar de Issam
    Inscrit en
    Mars 2002
    Messages
    578
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Mars 2002
    Messages : 578
    Points : 604
    Points
    604
    Par défaut consommation d'un article
    Bonjour

    SGBD Firebird 1.5:

    j'ai 4 tables qui correspondent a 2 relations Maitre/détails comme suit


    TABLE ACHATS
    --------------
    ID_ACHAT
    AC_DATE_ACHAT
    AC_PIECE_NUMERO


    ACHAT_LIGNES :
    ----------------
    ID_ACHAT_LIGNE
    AL_ID_ACHAT
    AL_ID_ARTICLE
    AL_PRIX
    AL_QTE



    TABLE VENTES
    --------------
    ID_VENTE
    VE_DATE_VENTE
    VE_PIECE_NUMERO




    VENTE_LIGNES :
    ----------------
    ID_VENTE_LIGNE
    VL_ID_VENTE
    VL_ID_ARTICLE
    VL_PRIX
    VL_QTE

    maintenant je veux afficher l'état de consommation d'un article comme
    par ex :

    DATE PIECE N° PRIX ACHAT PRIX VENTE
    -------------------------------------------------------
    11/02/2007 BR1 1 500 -
    12/02/2007 BL1 - 1 600
    --------------------------------------------------------



    Merci et bonne journée

  2. #2
    Membre confirmé
    Avatar de Mindiell
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    735
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 735
    Points : 546
    Points
    546
    Par défaut
    Où est le problème ?
    Quel code utilise-tu ? Quel résultat obtiens-tu ?

  3. #3
    Membre confirmé Avatar de Issam
    Inscrit en
    Mars 2002
    Messages
    578
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Mars 2002
    Messages : 578
    Points : 604
    Points
    604
    Par défaut
    le pb c'est que je ne sais pas comment formuler cette requette si c'est possible bien sur

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Points : 2 579
    Points
    2 579
    Par défaut
    Tu souhaites mettre sur la même ligne un achat et une vente mais sans expliquer quel lien il y'a entre ces deux colonnes.

    Est ce un PAMP (prix d'achat moyen pondéré) que tu souhaites mettre en oeuvre ?

  5. #5
    Membre confirmé
    Avatar de Mindiell
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    735
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 735
    Points : 546
    Points
    546
    Par défaut
    As-tu essayé quelque chose ? Si tu n'essayes pas, c'est évident que tu n'y arriveras pas...

    Peux-tu eclaircir l'affichage final souhaité ? J'ai du mal à comprendre quel chiffre va où...

  6. #6
    Membre averti Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Points : 441
    Points
    441
    Par défaut
    Si c'est un problème de requête, essaie de faire une requête avec des jointures selon tes attributs (je ne sais pas si id_achat doit correspondre à id_achat_ligne ou à al_id_achat), dans la clause where tu sépare tes égalités par un and et voilà:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select ta.ad_date_achat, tv.ve_date_vente, ta.ac_piece_numero, al.al_prix, vl.ve_prix
    from table_achats ta, tables_ventes tv, achats_ligne al, ventes_ligne vl
    where EgaliteEntreAttributsAchatEtAchatLigne
    AND EgaliteEntreAttributsVenteEtVenteLigne
    AND ta.ac_piece_numero=tv.ve_piece_numero
    Si c'est un problème d'affichage, il faudrait l'éclaircir un peu plus.

  7. #7
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Points : 2 579
    Points
    2 579
    Par défaut
    Ca sert à rien de fournir des requêtes avec des jointures si on ne connait même pas la corrélation souhaitée.

    C'est bien de vouloir aider mais conforter quelqu'un dans un flou artistique est tout sauf une bonne chose.

  8. #8
    Membre averti Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Points : 441
    Points
    441
    Par défaut
    Citation Envoyé par vmolines
    Ca sert à rien de fournir des requêtes avec des jointures si on ne connait même pas la corrélation souhaitée.
    Ne connaissant pas la corrélation souhaitée, j'ai donnée seulement la forme globale de la requête, puisqu'on ne sait pas non plus si le problème rencontré par le créateur de ce post concerne la requête en elle même ou la gestion de l'affichage des résultats. Si ça concerne la requête, cela peut donner une idée générale sur la forme, que le codeur aura à adapter selon ses besoins ; et je ne pense pas que ça va le
    Citation Envoyé par vmolines
    conforter dans un flou artistique

  9. #9
    Membre confirmé Avatar de Issam
    Inscrit en
    Mars 2002
    Messages
    578
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Mars 2002
    Messages : 578
    Points : 604
    Points
    604
    Par défaut
    Ok

    désolé pour le manque d'informations

    je vais éssayer de reformuler ma question :


    je veux obtenir un ordre chronologique des consommations (achats/vente) d'un article donné comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    DATE          | PIECE N°    |  PRIX ACHAT    |    PRIX VENTE    
    -----------------------------------------------------------------
    11/02/2007  |      BR1      |     1 500      |                     
    -----------------------------------------------------------------
    12/02/2007  |      BL1      |                |       1 600       
    -----------------------------------------------------------------
    dans cet exemple j'ai acheté cet article le 11/02/2007 au prix de 1500
    et je l'ai revendu le lendemain a 1600

    pour les tables


    TABLE ACHATS
    --------------
    ID_ACHAT
    AC_DATE_ACHAT
    AC_PIECE_NUMERO


    ACHAT_LIGNES :
    ----------------
    ID_ACHAT_LIGNE
    AL_ID_ACHAT
    AL_ID_ARTICLE
    AL_PRIX
    AL_QTE



    TABLE VENTES
    --------------
    ID_VENTE
    VE_DATE_VENTE
    VE_PIECE_NUMERO




    VENTE_LIGNES :
    ----------------
    ID_VENTE_LIGNE
    VL_ID_VENTE
    VL_ID_ARTICLE
    VL_PRIX
    VL_QTE

    AL_ID_ACHAT Correspond a ID_ACHAT
    VL_ID_VENTE Correspond a ID_VENTE

    j'ai essayé un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    select ac.ac_piece_designation, ac.ac_date as "adate" , Al.al_pu_ht, Al.Al_qte from Achats_lignes Al
    join achats ac
    on al.al_id_achat = ac.id_achat
    where al.al_id_article = 5
     
    Union
    select ve.ve_piece_designation,  vl.vl_date as "adate" , vl.vl_prix, vl.vl_qte from ventes_lignes vl
    join ventes ve
    on vl.vl_id_vente = ve.id_vente
     
    where vl.vl_id_article = 5
     
    order by 2
    mais sans succes

  10. #10
    Membre confirmé
    Avatar de Mindiell
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    735
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 735
    Points : 546
    Points
    546
    Par défaut
    Tes tables sont males construites je trouve, mais passons
    Essaye ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    select date_transaction, piece_numero, prix_achat, prix_vente
    from (
    select ac_date_achat as date_transaction, ac_piece_numero as piece_numero, al_prix as prix_achat, null as prix_vente
    from achats, achat_lignes
    where al_id_achat = id_achat
    union
    select ve_date_vente, ve_piece_numero, null, vl_prix
    from ventes, vente_lignes
    where vl_id_vente = id_vente
    )

  11. #11
    Membre confirmé Avatar de Issam
    Inscrit en
    Mars 2002
    Messages
    578
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Mars 2002
    Messages : 578
    Points : 604
    Points
    604
    Par défaut
    personne pour m'aider SVP ?

  12. #12
    Membre averti Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Points : 441
    Points
    441
    Par défaut
    Citation Envoyé par Issam Voir le message
    personne pour m'aider SVP ?
    As-tu essayé la requête de Mindiell ? Si oui qu'est ce que ça a donné ?

  13. #13
    Membre confirmé Avatar de Issam
    Inscrit en
    Mars 2002
    Messages
    578
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Mars 2002
    Messages : 578
    Points : 604
    Points
    604
    Par défaut
    Oui désolé

    j'ai éssayé la requette de Mindiell sans succès

    j'ai simplement éxécuter la requette de l'union
    comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT ac_date_achat AS date_transaction, ac_piece_numero AS piece_numero, al_prix AS prix_achat, NULL AS prix_vente
    FROM achats, achat_lignes
    WHERE al_id_achat = id_achat
    union
    SELECT ve_date_vente, ve_piece_numero, NULL, vl_prix
    FROM ventes, vente_lignes
    WHERE vl_id_vente = id_vente
    mais j'ai un
    et si j'éxécute toute la requette
    j'ai une autre érreur

    merci beaucoup

  14. #14
    Membre averti Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Points : 441
    Points
    441
    Par défaut
    tu sais quel est l'unknown datatype ?
    Peut être que le null n'est pas reconnu, essaie de le remplacer par un "".
    Pour la deuxième erreur, en gros ça dit que le mot réservé select est inconnu

  15. #15
    Membre confirmé Avatar de Issam
    Inscrit en
    Mars 2002
    Messages
    578
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Mars 2002
    Messages : 578
    Points : 604
    Points
    604
    Par défaut
    Citation Envoyé par AL1986 Voir le message
    tu sais quel est l'unknown datatype ?
    Peut être que le null n'est pas reconnu, essaie de le remplacer par un "".
    rien a faire j'ai tt éssayé la requette refuse de s'éxécuter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    SELECT ac_date AS date_transaction, ac_piece_designation AS piece_numero,
    al_pu_ht AS prix_achat, null as vl_prix
    FROM achats, achats_lignes al
    WHERE al_id_achat = id_achat
     
    union
     
    SELECT ve_date, ve_piece_designation as piece_numero, null, vl_prix
    FROM ventes, ventes_lignes
    WHERE vl_id_vente = id_vente

    je ne voudrai pas faire ça a la main ça serai top long et trop ....
    donc l'idéal est de faire ça en une seule requette SQL



    une idée ?

  16. #16
    Membre averti Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Points : 441
    Points
    441
    Par défaut
    En mettant 0 ça donne quoi ?
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    (SELECT ac_date, ac_piece_designation, al_pu_ht, 0
    FROM achats, achats_lignes
    WHERE al_id_achat = id_achat)
     union
    (SELECT ve_date, ve_piece_designation, 0, vl_prix
    FROM ventes, ventes_lignes
    WHERE vl_id_vente = id_vente);

  17. #17
    Membre confirmé Avatar de Issam
    Inscrit en
    Mars 2002
    Messages
    578
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Mars 2002
    Messages : 578
    Points : 604
    Points
    604
    Par défaut
    ok on progresse

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT ac_date AS date_transaction, ac_piece_designation AS piece_numero,
    al_pu_ht AS prix_achat, 0.00 as vl_prix
    FROM achats_lignes al
    left join achats ac
    on al_id_achat = id_achat
    where al.al_id_article = :param
     
    union
     
    SELECT ve_date, ve_piece_designation as piece_numero , 0.00 , vl_prix
    FROM  ventes_lignes vl
    left join ventes ve
    on vl_id_vente = id_vente
    where vl.vl_id_article = :param
    j'ai remplacer les 0 par des 0.00 vu que c'est un champs numeric
    maintenant faudrai que je vérifie que le résultat est correct

    a+ et merci beaucoup

Discussions similaires

  1. Récupérer les consommations d'articles
    Par yaciner dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/12/2014, 21h06
  2. Prix d'achat des articles consommés
    Par Snag12 dans le forum SAGE
    Réponses: 3
    Dernier message: 09/07/2013, 17h43
  3. [Sage X3 V5] post-consommation sur article
    Par leloup84 dans le forum SAGE
    Réponses: 4
    Dernier message: 17/04/2009, 14h09

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