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

Requêtes MySQL Discussion :

somme et comparaison


Sujet :

Requêtes MySQL

  1. #1
    Membre habitué
    Inscrit en
    Novembre 2006
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 262
    Points : 163
    Points
    163
    Par défaut somme et comparaison
    Bonjour,
    Soient les deux tables :
    table Encaissement
    IDJournalEncaissement
    IDClient : int , null
    montantPaye , int
    IDLivraisonClient, int, null
    et
    table LivraisonClient
    IDLivraisonClient, int
    IDClient, int
    totalTTC, decimal
    est il possible de faire une requête qui contienne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    - la somme des montantpaye (table encaissement).
    - la somme des totalTTC (table LivraisonClient).
    - Si IDClient existe dans (table encaissement et table livraison) alors 
      Créance =  la somme des totalTTC - la somme des montantpaye
      Avance = la somme des montantpaye - la somme des totalTTC
     Fin
    - Si IDClient existe dans table livraison et pas dans table encaissement alors :
      Créance = la somme des totalTTC
    - si IDClient existe dans table encaissement et pas dans table livraison alors
     Avance = la somme des montantpaye

  2. #2
    Membre éclairé Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 597
    Points : 886
    Points
    886
    Par défaut
    Salut.
    As-tu au moins essayé ?
    Donnes-nous la requête que tu as essayée et on t'aidera
    Participez vous aussi !
    Message utile
    Discussion résolue

  3. #3
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Je vous invite à regarder ces tutoriaux :

    Que donne cette requête :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    select coalesce(e.IDClient, l.IDClient)
         , case -- Si IDClient existe dans encaissement et livraison
                when l.IDClient is not null and e.IDClient is not null
                then l.sum_totalTTC - e.sum_montantPaye
                -- Si IDClient existe dans livraison et pas dans encaissement
                when l.IDClient is not null and e.IDClient is null
                then l.sum_totalTTC
            end as creance
         , case -- Si IDClient existe dans encaissement et livraison
                when l.IDClient is not null and e.IDClient is not null
                then e.sum_montantPaye - l.sum_totalTTC
                -- si IDClient existe dans encaissement et pas dans livraison
                when l.IDClient is null and e.IDClient is not null
                then e.sum_montantPaye
            end as avance
      from (select IDClient, sum(montantPaye) as sum_montantPaye
              from Encaissement
             group by IDClient
           ) e
      full outer join
           (select IDClient, sum(totalTTC) as sum_totalTTC
              from LivraisonClient
             group by IDClient
           ) l
        on l.IDClient = e.IDClient
    [edit]Il y a probablement moyen de simplifier en s'appuyant sur le fait que NULL - valeur renvoie NULL :
    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
    select coalesce(e.IDClient, l.IDClient)
           -- Si IDClient existe dans livraison et pas dans encaissement (=> coalece)
         , l.sum_totalTTC    - coalesce(e.sum_montantPaye, 0) as creance
           -- Si IDClient existe dans encaissement et pas dans livraison (=> coalece)
         , e.sum_montantPaye - coalesce(l.sum_totalTTC, 0)    as avance
      from (select IDClient, sum(montantPaye) as sum_montantPaye
              from Encaissement
             group by IDClient
           ) e
      full outer join
           (select IDClient, sum(totalTTC) as sum_totalTTC
              from LivraisonClient
             group by IDClient
           ) l
        on l.IDClient = e.IDClient

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/08/2011, 14h38
  2. [2008R2] Comparaison de valeurs et somme sur plusieurs datasets
    Par gregWeb dans le forum SSRS
    Réponses: 1
    Dernier message: 22/07/2011, 15h14
  3. Comparaisons de sommes!
    Par cedlannoy dans le forum SQL
    Réponses: 2
    Dernier message: 25/04/2008, 15h41
  4. comparaison de 2 dates
    Par eisti dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 11/08/2003, 11h33
  5. [CR ?] Somme d'heure sous Crystal ?
    Par Peter PARKER dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 17/04/2003, 16h24

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