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 :

Somme des prix


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 99
    Points : 43
    Points
    43
    Par défaut Somme des prix
    Bonjour,
    Mon problème c'est que je veux calculer la somme des prix pour les les factures à une date choisit par l'utilisateur, les réservation peuvent avoir des promotions ou non mais la requête que j'ai fait me retourne que les factures dont les réservations ont des promotions.
    Voila ma requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT FA_ID, FA_DB,FA_TD,
     sum(MFT_AR_DETAILR_PRIXA+MFT_AR_DETAILR_PRIXB+MFT_AR_DETAILR_PRIXC+MFT_AR_DETAILR_PRIXT) - sum(MFT_AR_PROMO_MOUNT) AS prix_total
    FROM MFT_AR_FACTURE
    JOIN MFT_AR_DETAILR  ON MFT_AR_DETAILR_FAC = FA_ID
    LEFT JOIN MFT_AR_PROMO ON MFT_AR_PROMO_YRES = MFT_AR_DETAILR_YRES_ID AND MFT_AR_PROMO_DATE <=MFT_AR_DETAILR_CURRENT_DATE
    WHERE MFT_AR_DETAILR_CURRENT_DATE = '02/04/2010' 
    GROUP BY FA_ID, FA_DB,FA_TD
    voila la structure de mes tables:
    -----------------------------------
    MFT_AR_DETAILR: TABLE reservation
    ------------------------------------
    MFT_AR_DETAILR_YRES_ID (l'ID de la réservation)
    MFT_AR_DETAILR_PRIXA
    MFT_AR_DETAILR_PRIXB
    MFT_AR_DETAILR_PRIXC
    MFT_AR_DETAILR_PRIXT
    MFT_AR_DETAILR_FAC (clé étrangère qui référence a la table facture)
    MFT_AR_DETAILR_CURRENT_DATE (date courante pour chaque jour de la réservation)
    --------------------------------------
    MFT_AR_FACTURE: TABLE facture
    ---------------------------------------
    FA_ID (l'ID de la facture)
    FA_DB (l'agence)
    FA_TD (taux de change)
    ----------------------------------------------
    MFT_AR_DETAIL_FACTURE: TABLE Détails de la facture
    ----------------------------------------------
    DF_ID (l'ID de détails de la facture)
    DF_FA_ID (clé étrangère qui référence a la TABLE facture)
    DF_YRES_ID (clé étrangère qui référence à la TABLE réservation)
    ------------------------------------------------
    MFT_AR_PROMO: TABLE promotion
    ---------------------------------------------------
    MFT_AR_PROMO_YRES_ID(clé étrangère qui référence à la TABLE réservation)
    MFT_AR_PROMO_DATE (date courante de chaque ligne)
    MFT_AR_PROMO_MOUNT(Montant de la promotion)
    Donc si l'utilisateur saisit une date la requête doit retourner la somme des prix des lignes de chaque réservations qui ont un date 'MFT_AR_DETAILR_CURRENT_DATE" <= à la date saisie ainsi la somme des promotions pour les réservations qui possèdent des promotions.
    Merci d'avance

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    Bonjour,

    Votre problème est vraiment que la ligne n'est pas retournée ou que le prix total est NULL dès lors qu'il n'y a pas de promotion?

  3. #3
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 99
    Points : 43
    Points
    43
    Par défaut Somme des prix
    Le problème c'est qu'il me retourne les factures dont les réservations ont des promotions alors pour moi je veux les factures dont les réservations ont des promotions et les réservations qui n'ont pas des réservations

  4. #4
    Membre régulier Avatar de Doracle
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2010
    Messages : 60
    Points : 74
    Points
    74
    Par défaut
    Utilise alors des jointures externes. Les mots clefs sont LEFT(ou RIGHT/FULL) OUTER JOIN.
    Il te renverra donc aussi les éléments qui ne sont pas relatifs a l'égalité de la jointure.

  5. #5
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 99
    Points : 43
    Points
    43
    Par défaut Somme des prix
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT FA_ID, FA_DB,FA_TD,
     sum(MFT_AR_DETAILR_PRIXA+MFT_AR_DETAILR_PRIXB+MFT_AR_DETAILR_PRIXC+MFT_AR_DETAILR_PRIXT) - sum(MFT_AR_PROMO_MOUNT) AS prix_total
    FROM MFT_AR_FACTURE F
    JOIN MFT_AR_DETAILR  D  ON D.MFT_AR_DETAILR_FAC = F.FA_ID
     LEFT  OUTER JOIN MFT_AR_PROMO P ON P.MFT_AR_PROMO_YRES = D.MFT_AR_DETAILR_YRES_ID AND P.MFT_AR_PROMO_DATE <=D.MFT_AR_DETAILR_CURRENT_DATE
    WHERE D. MFT_AR_DETAILR_CURRENT_DATE = '02/04/2010' 
    GROUP BY FA_ID, FA_DB,FA_TD
    J'ai modifié la requête mais c'est le même problème

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    LEFT JOIN et LEFT OUTER JOIN sont équivalents.

    sum(MFT_AR_PROMO_MOUNT) vous renverra NULL lorsqu'il n'y a pas de promotion. Remplacez cette expression par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    coalesce(sum(MFT_AR_PROMO_MOUNT),0)
    Ca peut éviter des mauvaises surprises.
    Donnez nous un exemple de données qui ne remontent pas alors qu'elles le devraient, car à priori avec la requête que vous nous montrez, ça ne devrait pas se produire.

  7. #7
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 99
    Points : 43
    Points
    43
    Par défaut Somme des prix
    Je vous donne un exemple:
    J'ai dans ma base 5 factures:
    - F1 est liée à 2 réservations ces mêmes deux réservations n'ont pas de promotions
    - F2 est liées à 3 réservations, une de ces trois réservations possèdent de promotion donc la requête l'affiche
    -F3 est liées à une seule réservation qui a une promotion et la requête l'affiche
    -F4 et F5 n'ont pas de promotions donc la requête ne les affiche pas
    Alors pour moi je veux toutes les factures dont leur réservations possèdent des promotions ou non,
    Le système n"affiche aucun message d'erreur pour les valeurs NULL car pour lui ne sont plus affichées, il retourne que les factures dont leurs réservations possèdent des promotions

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    Vos explications ne sont pas très claires, donnez nous plutot le contenu de chacune de vos tables pour quelques factures, que l'on puisse faire des tests et vous aider plus efficacement.

  9. #9
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 99
    Points : 43
    Points
    43
    Par défaut Somme des prix
    VOILA UN EXEMPLE dans la pièce jointe,
    Pour moi je veux afficher toutes les factures mais avec cette requête il me retourne que la facture 1 et 3

  10. #10
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 99
    Points : 43
    Points
    43
    Par défaut Somme des prix
    Comme j'ai décrit dans l'exemple, si l'utilisateur choisit la date "02/04/2010", la requête doit afficher les factures en calculant le prix(mois les promotions bien sur s'il ya des promotions ou 0 si c'est pas le cas) pour les lignes de la table RESERVATION et qui ont CURRENT_DATE <= a "02/04/2010"

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    Votre description évolue au cours du temps.
    Précisez votre sgbd svp, et essayez cette requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT FA_ID, FA_DATE,FA_TD,
     sum(coalesce(MFT_AR_DETAILR_PRIXA,0)+coalesce(MFT_AR_DETAILR_PRIXB,0)+coalesce(MFT_AR_DETAILR_PRIXC,0)+coalesce(MFT_AR_DETAILR_PRIXT,0)) - sum(coalesce(MFT_AR_PROMO_MOUNT,0)) AS prix_total
    FROM MFT_AR_FACTURE
    JOIN MFT_AR_DETAILR  ON MFT_AR_DETAILR_FAC = FA_ID
    LEFT JOIN MFT_AR_PROMO ON MFT_AR_PROMO_YRES_ID = MFT_AR_DETAILR_YRES_ID AND MFT_AR_PROMO_DATE = MFT_AR_DETAILR_CURRENT_DATE
    WHERE MFT_AR_DETAILR_CURRENT_DATE <= to_date('02/04/2010','dd/mm/yyyy') 
    GROUP BY FA_ID, FA_DATE, FA_TD

  12. #12
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 99
    Points : 43
    Points
    43
    Par défaut Somme des prix
    ça se voit qu'elle évolue puisque j'ai mis un document word en pièce jointe ,
    En faite comme vous voyez la description est assez longue et un peut compliqué,
    Pour mon SGBD je travaille avec oracle 10g, l'éditeur c'est visual basic 6.0 et crystal report 10 pour le reporting

  13. #13
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    Pouvez-vous préciser ce qui ne va pas avec la dernière requête que je vous ai proposée?

  14. #14
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 99
    Points : 43
    Points
    43
    Par défaut Somme des prix
    J'ai testé votre requête et çava pour le moments, mais j'ai plusieurs cas à vérifier donc si ça marche bien je vous informe et merci beaucoup pour cet effort

Discussions similaires

  1. [VBA] Sommes des prix associées à des valeurs
    Par tuta77 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 03/02/2009, 10h18
  2. Réponses: 3
    Dernier message: 09/05/2007, 12h43
  3. Réponses: 21
    Dernier message: 01/08/2006, 21h44
  4. [Access] Combinatoire : Liste article dont la somme des prix
    Par enibris dans le forum Langage SQL
    Réponses: 14
    Dernier message: 17/03/2006, 11h03
  5. Somme des champs ? existe t il une fonction ...
    Par dark_vidor dans le forum Langage SQL
    Réponses: 6
    Dernier message: 02/01/2006, 12h57

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