1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies. En savoir plus.
  2. Bonjour tout le monde ! Veillez consulter la Politique de forum pour comprendre nos règles, Merci a vous !
    Rejeter la notice

WD Requête - résultat incohérent

Discussion dans 'Windev' créé par anakinsqt, Oct 17, 2019.

  1. anakinsqt

    anakinsqt Member

    Inscrit:
    Sept 5, 2019
    Messages:
    115
    J'aime reçus:
    1
    Bonjour,
    Je pensais avoir terminé, mais non un problème lors de la phase de mon test est apparu.
    J'ai bien compris l'intérêt d'une requête grâce à vous.
    J'ai donc fait une requête pour les entrées et sorties qui alimente le stock final. Lorsque c'est uniquement pour les entrées le résultat (ex : 2+5=7) est correct.
    Mais lorsque dans cette même requête je rajoute les sorties, le résultat des sommes est incohérent et je bloque.
    Voici mon code :

    SELECT
    Produit.Produit AS Produit,
    EntréeStock.Conditionnement AS Conditionnement,
    EntréeStock.Prix_Unitaire AS Prix_Unitaire,
    SUM(EntréeStock.QuantitéEntrée) AS la_somme_QuantitéEntrée,
    SUM(SortieStock.QuantitéSortie) AS la_somme_QuantitéSortie
    FROM
    Produit,
    EntréeStock,
    SortieStock
    WHERE
    Produit.IDProduit = SortieStock.IDProduit
    AND Produit.IDProduit = EntréeStock.IDProduit

    GROUP BY
    EntréeStock.Conditionnement,
    EntréeStock.Prix_Unitaire,
    Produit.Produit

    Pouvez-vous m'aider, merci
     
    Tags:
  2. faq

    faq Active Member

    Inscrit:
    Fev 13, 2019
    Messages:
    411
    J'aime reçus:
    35
    Bonjour

    Si un produit n'existe pas dans l'un de 2 fichiers le résultat sera faux, alors tester d'abord avec un produit qui appartient à 2 cotés
    Sinon il y a d'autre type des requêtes à utiliser dans ce cas là.
     
  3. anakinsqt

    anakinsqt Member

    Inscrit:
    Sept 5, 2019
    Messages:
    115
    J'aime reçus:
    1

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    Bonjour

    Si un produit n'existe pas dans l'un de 2 fichiers le résultat sera faux, alors tester d'abord avec un produit qui appartient à 2 cotés
    Sinon il y a d'autre type des requêtes à utiliser dans ce cas là.
    Cliquez pour agrandir...
    Bonjour,
    Avec un produit cela fonctionne très bien.
    J'ai donc changé de stratégie en faisant 2 requêtes et une troisième avec UNION. Le soucis c'est que lorsque j'ai testé ma SQL, mes Sorties sont dans colonne Entrées qui est la seule qui s'affiche. Au cas où, je vous mets mon code :

    SELECT

    Produit.Produit AS Produit,

    Produit.Conditionnement AS Conditionnement,

    Produit.Prix_Unitaire AS Prix_Unitaire,

    SUM(EntréeStock.QuantitéEntrée) AS la_somme_QuantitéEntrée

    FROM

    Produit,

    EntréeStock

    WHERE

    Produit.IDProduit = EntréeStock.IDProduit


    GROUP BY

    Produit.Produit,

    Produit.Conditionnement,

    Produit.Prix_Unitaire


    UNION ALL


    SELECT

    Produit.Produit AS Produit,

    Produit.Conditionnement AS Conditionnement,

    Produit.Prix_Unitaire AS Prix_Unitaire,

    SUM(SortieStock.QuantitéSortie) AS la_somme_QuantitéSortie

    FROM

    Produit,

    SortieStock

    WHERE

    Produit.IDProduit = SortieStock.IDProduit


    GROUP BY

    Produit.Produit,

    Produit.Conditionnement,

    Produit.Prix_Unitaire


    Je vous remercie beaucoup
     
    #3 anakinsqt, Oct 17, 2019
    Dernière édition: Oct 17, 2019
  • aldev

    aldev New Member

    Inscrit:
    Jan 25, 2018
    Messages:
    8
    J'aime reçus:
    0
    bonjour
    c'est pas plus simple de faire un seul fichier genre "Mouvement" .
    les entrées stock en +
    les sorties en -
    le stock final en 1 seule requete.

    parce que là l'union il faudrait faire une formule somme entrée - somme sortie .
     
  • anakinsqt

    anakinsqt Member

    Inscrit:
    Sept 5, 2019
    Messages:
    115
    J'aime reçus:
    1

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    bonjour
    c'est pas plus simple de faire un seul fichier genre "Mouvement" .
    les entrées stock en +
    les sorties en -
    le stock final en 1 seule requete.

    parce que là l'union il faudrait faire une formule somme entrée - somme sortie .
    Cliquez pour agrandir...
    Bonsoir,
    ca je ne sait pas faire, sur un autre site on me parle de sous requête ? Je ne sais pas comment m'y prendre.
    Merci
     
  • aldev

    aldev New Member

    Inscrit:
    Jan 25, 2018
    Messages:
    8
    J'aime reçus:
    0
    sinon pour faire simple.
    lit le total requete entree
    lit le total requete sortie
    et tu fais le calcul.
    comme ça pas d'union.

    bon c'est pas top je le reconnais.
     
  • anakinsqt

    anakinsqt Member

    Inscrit:
    Sept 5, 2019
    Messages:
    115
    J'aime reçus:
    1

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    sinon pour faire simple.
    lit le total requete entree
    lit le total requete sortie
    et tu fais le calcul.
    comme ça pas d'union.

    bon c'est pas top je le reconnais.
    Cliquez pour agrandir...
    Je suis d'accord mais comment on fait, j'ai essayé plusieurs solutions mais ca ne fonctionne pas…
    Un coup de main s'il vous plait
     
  • Yusep

    Yusep Active Member
    DUMP TEAM

    Inscrit:
    Jan 3, 2018
    Messages:
    203
    J'aime reçus:
    155

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    Bonsoir,
    ca je ne sait pas faire, sur un autre site on me parle de sous requête ? Je ne sais pas comment m'y prendre.
    Merci
    Cliquez pour agrandir...
    Voir ici :

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

     
  • aldev

    aldev New Member

    Inscrit:
    Jan 25, 2018
    Messages:
    8
    J'aime reçus:
    0
    bonjour
    en programmation, arrivez à obtenir la somme des entrées puis des sorties ?
     
  • PhantomX

    PhantomX Member

    Inscrit:
    Juil 11, 2018
    Messages:
    78
    J'aime reçus:
    61

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!


    Probablement que ceci fonctionnerait. Tu n'auras pas à traiter le résultat comme avec ton Union

    Code (Windev):

    SELECT

    Produit.Produit AS Produit,
    Produit.Conditionnement AS Conditionnement,
    Produit.Prix_Unitaire AS Prix_Unitaire,
    ((Select SUM(EntréeStock.QuantitéEntrée FROM EntréeStock WHERE EntréeStock.idProduits = Produits.idProduits) - (SELECT SUM(SortieStock.QuantitéSortie) FROM SortieStock WHERE SortieStock.idProduits = Produits.idProduits)) AS QuantiteStock

    FROM
    Produits
     
  • khaliassas

    khaliassas Active Member

    Inscrit:
    Mar 4, 2019
    Messages:
    446
    J'aime reçus:
    142

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!


    Probablement que ceci fonctionnerait. Tu n'auras pas à traiter le résultat comme avec ton Union

    Code (Windev):

    SELECT

    Produit.Produit AS Produit,
    Produit.Conditionnement AS Conditionnement,
    Produit.Prix_Unitaire AS Prix_Unitaire,
    ((Select SUM(EntréeStock.QuantitéEntrée FROM EntréeStock WHERE EntréeStock.idProduits = Produits.idProduits) - (SELECT SUM(SortieStock.QuantitéSortie) FROM SortieStock WHERE SortieStock.idProduits = Produits.idProduits)) AS QuantiteStock

    FROM
    Produits
    Cliquez pour agrandir...
    je dirais oui SI conditionnement entrée = conditionnement sortie = conditionnement produit.

    en effet tu peux rentrer 10 lot de 10 savons mais sortir 10 savons

    car dans sa table entrée et table sortie il y a un conditionnement. en plus de la table produit.

    donc si la l'analyse du projet n'a pas changer je pense que ça va être chaud.
    et dans ce cas je verrais a retirer le conditionnement de produit créer peut être une table de définition de conditionnement
    codeconditionement libelle quantitie unitaire
    dans les entrées sorties on renseigne le code conditionnement

    et après de faire quantité *quantité unitaire (avec une liaison sur le code conditionnement

    ou alors on garde conditionnement du produit mais on le retire des entrées sorties.
     
  • anakinsqt

    anakinsqt Member

    Inscrit:
    Sept 5, 2019
    Messages:
    115
    J'aime reçus:
    1

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    je dirais oui SI conditionnement entrée = conditionnement sortie = conditionnement produit.

    en effet tu peux rentrer 10 lot de 10 savons mais sortir 10 savons

    car dans sa table entrée et table sortie il y a un conditionnement. en plus de la table produit.

    donc si la l'analyse du projet n'a pas changer je pense que ça va être chaud.
    et dans ce cas je verrais a retirer le conditionnement de produit créer peut être une table de définition de conditionnement
    codeconditionement libelle quantitie unitaire
    dans les entrées sorties on renseigne le code conditionnement

    et après de faire quantité *quantité unitaire (avec une liaison sur le code conditionnement

    ou alors on garde conditionnement du produit mais on le retire des entrées sorties.
    Cliquez pour agrandir...

    Bonjour,
    En effet le code de PhantomX ne fonctionne pas chez moi, malgré que l'ai adapté à mon besoin. Voici ma table que j'ai simplifié. Un coup de main n'est pas de refus.

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!



    Le code SQL est le suivant ;

    SELECT X.IDProduit , P.Produit , X.EntréeStock , Y.SortieStock
    FROM
    ( SELECT EntréeStock.IDProduit ,SUM(EntréeStock.QuantitéEntrée) AS EntréeStock, 0 AS SortieStock
    FROM EntréeStock
    GROUP BY EntréeStock.IDProduit
    ) X ,
    ( SELECT SortieStock.IDProduit ,0 AS EntréeStock, SUM(SortieStock.QuantitéSortie) AS SortieStock
    FROM SortieStock
    GROUP BY SortieStock.IDProduit
    ) Y ,
    Produit P
    WHERE X.IDProduit = Y.IDProduit AND P.IDProduit = x.IDProduit

    Cà fonctionne, le seul souci est que si j'entre un produit, il ne s'affiche pas, par contre si je mets une sortie, il s'affiche. et de plus je n'ai pas le conditionnement ni le prix.
    Ce code n'est pas le mien, il a été fait grace à l'aide d'une autre personne.
    Pour le reste les multiplication, etc …. je sais faire.

    Merci si vous pouvez m'aidez
     
  • PhantomX

    PhantomX Member

    Inscrit:
    Juil 11, 2018
    Messages:
    78
    J'aime reçus:
    61

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!


    Humm... ca devrait pourtant fonctionner, je fais souvent ce genre de sous-requête.

    Ton FROM devrait te retourner toute tes produits et la SUM de tes entrés sera caculé et la somme de tes sortie aussi et sera ensuite soustraite.

    Essaie cette requête pour voir et redonne moi le résultat, je suis curieux, tu devrais avoir tout tes produits et s'il n'y a pas de d'entrée ta SommeQuantiteEntree devrait être à 0 et s'il n'y a pas de sortie ta SommeQuantiteSortie devrait être à 0
    Si tu as une erreur, donne la nous car ca ne devrait pas, (à moins que j'ai loupé quelque chose)

    SELECT
    Produit.IDProduit AS IDProduit,
    Produit.Prix_Unitaire AS Prix_Unitaire,
    (Select SUM(EntréeStock.QuantitéEntrée FROM EntréeStock WHERE EntréeStock.idProduits = Produits.idProduits) as SommeQuantiteEntree,
    (SELECT SUM(SortieStock.QuantitéSortie) FROM SortieStock WHERE SortieStock.idProduits = Produits.idProduits)) as SommeQuantiteSortie

    FROM
    Produits

    N'oublie pas qu'une sous-rêquete NE PEUT PAS avoir plus qu'un résultat (plus d'une colonne si tu veux)
     
  • anakinsqt

    anakinsqt Member

    Inscrit:
    Sept 5, 2019
    Messages:
    115
    J'aime reçus:
    1

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!


    Humm... ca devrait pourtant fonctionner, je fais souvent ce genre de sous-requête.

    Ton FROM devrait te retourner toute tes produits et la SUM de tes entrés sera caculé et la somme de tes sortie aussi et sera ensuite soustraite.

    Essaie cette requête pour voir et redonne moi le résultat, je suis curieux, tu devrais avoir tout tes produits et s'il n'y a pas de d'entrée ta SommeQuantiteEntree devrait être à 0 et s'il n'y a pas de sortie ta SommeQuantiteSortie devrait être à 0
    Si tu as une erreur, donne la nous car ca ne devrait pas, (à moins que j'ai loupé quelque chose)

    SELECT
    Produit.IDProduit AS IDProduit,
    Produit.Prix_Unitaire AS Prix_Unitaire,
    (Select SUM(EntréeStock.QuantitéEntrée FROM EntréeStock WHERE EntréeStock.idProduits = Produits.idProduits) as SommeQuantiteEntree,
    (SELECT SUM(SortieStock.QuantitéSortie) FROM SortieStock WHERE SortieStock.idProduits = Produits.idProduits)) as SommeQuantiteSortie

    FROM
    Produits

    N'oublie pas qu'une sous-rêquete NE PEUT PAS avoir plus qu'un résultat (plus d'une colonne si tu veux)
    Cliquez pour agrandir...
    Bonjour,
    Après quelques modifications adaptés pour mon projet, tout fonctionne impeccablement.
    Cela fait 15 jours que je galère, un immense MERCI
     
  • Partager cette page

    Chargement...