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 :

requette cumul et jointure


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 74
    Points : 68
    Points
    68
    Par défaut requette cumul et jointure
    Bonjour,

    j'ai une table t_tresorie et une autre t_mode_paiement

    trs_id - trs_date - trs_credit - trs_debit - trs_pmt_id
    1 10-10-2015 200 1
    2 14-10-2015 100 2
    3 15-10-2015 500 2
    4 18-10-2015 200 3

    t_mode_paiement
    pmt_id - pmt_nom
    1 espece
    2 cheque
    3 virement

    je voudrai un résultat comme ça avec un cumul crédit et débit

    trs_id - trs_date - trs_credit - trs_debit - cumul - trs_pmt_id - pmt_nom
    1 10-10-2015 200 200 1 espece
    2 14-10-2015 100 100 2 cheque
    3 15-10-2015 500 600 2 cheque
    4 18-10-2015 200 400 3 virement


    mais les résultats que j'obtiens sont faux


    merci de votre aide

    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
     
    SET @total:=0;
    SELECT 
      t1.trs_id,
      t1.trs_dte,
      t1.trs_pmt_id,
      t1.trs_credit,
      t1.trs_debit,
      p.pmt_nom,
      (@total := @total +(t2.trs_credit - t2.trs_debit)) as cumul  
    FROM
      t_tresorie t1  
    LEFT JOIN t_tresorie  AS t2 USING(trs_id)
      left outer JOIN t_mode_paiement p ON 
    t1.trs_pmt_id  = p.pmt_id
     
    GROUP  BY 
      t1.trs_id,
      t1.trs_dte,  
      p.pmt_nom
     
    ORDER BY t1.trs_id desc

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 133
    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 133
    Points : 38 556
    Points
    38 556
    Billets dans le blog
    9
    Par défaut
    La syntaxe de votre requete est incorrecte

    Codez comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT table1.Col1, table1.col2, table2.col3...
    From Table1
    Left Outer Join table2
      on table2.col1 = table1.col1
     and table2.col2 = table1.col2
    where table1.col1 = 
      and table2.col3 >
    Group By table1.Col1, table1.col2, table2.col3
    Order by table1.Col1, table1.col2, table2.col3
    La clause ON est obligatoire pour le critère de jointure
    Votre groupage (group by) doit correspondre à votre select

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 74
    Points : 68
    Points
    68
    Par défaut
    bonjour escartefigue,

    merci de votre réponse.
    Par contre je ne comprends pas la jointure sur les 2 colonnes et le where.
    Si vous pouvez m'éclairer là dessus.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    on table2.col1 = table1.col1
     and table2.col2 = table1.col2
    where table1.col1 = 
      and table2.col3 >

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 133
    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 133
    Points : 38 556
    Points
    38 556
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Ce n'est qu'un exemple

    Dans un prédicat de jointure de type inner join ou left/right (outer) join, vous devez obligatoirement déclarer une colonne (avec on) et facultativement d'autres colonnes (avec autant de and que nécessaire)
    De même j'ai mis à titre d'exemple un filtrage (where) sur 2 colonnes, à vous d'adapter, n'en mettez pas si vous devez traiter toute la table résultante de la jointure.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 74
    Points : 68
    Points
    68
    Par défaut
    bonjour escartefigue,

    d'accord merci

Discussions similaires

  1. requette avec jointure et affichage redondant
    Par gilles974 dans le forum Requêtes
    Réponses: 26
    Dernier message: 25/10/2008, 12h35
  2. requette jointure hql
    Par isselmoumg dans le forum Hibernate
    Réponses: 1
    Dernier message: 22/05/2008, 14h11
  3. requette udpate avec jointure
    Par comme de bien entendu dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 28/02/2008, 17h45
  4. requette de jointure entre 2 tables
    Par botambaoaks dans le forum Langage SQL
    Réponses: 8
    Dernier message: 18/10/2006, 07h56
  5. syntaxe requette jointure
    Par sakini dans le forum Requêtes
    Réponses: 2
    Dernier message: 16/01/2006, 19h11

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