A voir également:
- Problème de jointure / group by Mysql
- Mysql community server - Télécharger - Bases de données
- Home by me - Télécharger - 3D
- Group whatsapp - Guide
- To be filled by o.e.m - Forum Logiciels
- Moa by bva avis ✓ - Forum Vos droits sur internet
13 réponses
SELECT factures.date,factures.libelle,factures.ref, sum(factures.debit) as montant,fournisseurs.nom, sum(paiement_factures.montant)
FROM factures inner join fournisseurs on fournisseurs.id=factures.id_fournisseur
right join paiement_factures on factures.ref=paiement_factures.ref
group by factures.id;
Mais je penses qu'il faudrait repenser ta bdd,
une table ligne_facture serait plus adapté.
factures :
id
id_fournisseur
date
ligne_facture :
id
libelle
debit
ref_facture
Ce qui donnerai :
SELECT factures.date,factures.libelle,factures.ref, sum(ligne_factures.debit) as montant,fournisseurs.nom, sum(paiement_factures.montant)
FROM factures inner join fournisseurs on fournisseurs.id=factures.id_fournisseur
inner join ligne_factures on ligne_factures.ref_facture=facture.id
left join paiement_factures on factures.ref=paiement_factures.ref
group by factures.id;
FROM factures inner join fournisseurs on fournisseurs.id=factures.id_fournisseur
right join paiement_factures on factures.ref=paiement_factures.ref
group by factures.id;
Mais je penses qu'il faudrait repenser ta bdd,
une table ligne_facture serait plus adapté.
factures :
id
id_fournisseur
date
ligne_facture :
id
libelle
debit
ref_facture
Ce qui donnerai :
SELECT factures.date,factures.libelle,factures.ref, sum(ligne_factures.debit) as montant,fournisseurs.nom, sum(paiement_factures.montant)
FROM factures inner join fournisseurs on fournisseurs.id=factures.id_fournisseur
inner join ligne_factures on ligne_factures.ref_facture=facture.id
left join paiement_factures on factures.ref=paiement_factures.ref
group by factures.id;
Table factures :
id
id_fournisseur
date
libelle
debit
ref
Table paiement_factures:
id
ref
date
montant
Table fournisseur
id
nom
Une facture = plusieurs enregistrement dans la table factures, avec le meme "ref"
Une facture peut etre payée en plusieurs fois, donc il peut y avoir plusieurs lignes dans la table paiement_factures, avec le meme "ref", celui de la facture concernée
id
id_fournisseur
date
libelle
debit
ref
Table paiement_factures:
id
ref
date
montant
Table fournisseur
id
nom
Une facture = plusieurs enregistrement dans la table factures, avec le meme "ref"
Une facture peut etre payée en plusieurs fois, donc il peut y avoir plusieurs lignes dans la table paiement_factures, avec le meme "ref", celui de la facture concernée
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
le probleme, a mon avis, vient du fait que j'ai deux fois sum() et un seul group by, donc faut trouver une solution pour mettre deux group by ??? je ne sait pas :-(
up !
up !
merci SPIDAG ! !
ca marche, et j'ai compris ma faute ;)
SELECT factures.date, factures.libelle, factures.ref, sum( ligne_facture.debit ) AS montant, fournisseurs.nom, sum( paiement_factures.montant )
FROM factures
INNER JOIN fournisseurs ON fournisseurs.id = factures.id_fournisseur
INNER JOIN ligne_facture ON ligne_facture.ref_facture = factures.ref
LEFT JOIN paiement_factures ON factures.ref = paiement_factures.ref
GROUP BY factures.ref
LIMIT 0 , 30;
merci une deuxème fois
ca marche, et j'ai compris ma faute ;)
SELECT factures.date, factures.libelle, factures.ref, sum( ligne_facture.debit ) AS montant, fournisseurs.nom, sum( paiement_factures.montant )
FROM factures
INNER JOIN fournisseurs ON fournisseurs.id = factures.id_fournisseur
INNER JOIN ligne_facture ON ligne_facture.ref_facture = factures.ref
LEFT JOIN paiement_factures ON factures.ref = paiement_factures.ref
GROUP BY factures.ref
LIMIT 0 , 30;
merci une deuxème fois
mysql_
Messages postés
3
Date d'inscription
jeudi 4 octobre 2007
Statut
Membre
Dernière intervention
4 octobre 2007
4 oct. 2007 à 18:03
4 oct. 2007 à 18:03
SELECT factures.date, factures.libelle, factures.ref, sum( ligne_facture.debit ) AS montant, fournisseurs.nom, sum( paiement_factures.montant )
FROM factures
INNER JOIN fournisseurs ON fournisseurs.id = factures.id_fournisseur
INNER JOIN ligne_facture ON ligne_facture.ref_facture = factures.ref
LEFT JOIN paiement_factures ON factures.ref = paiement_factures.ref
GROUP BY factures.ref
LIMIT 0 , 30;
FROM factures
INNER JOIN fournisseurs ON fournisseurs.id = factures.id_fournisseur
INNER JOIN ligne_facture ON ligne_facture.ref_facture = factures.ref
LEFT JOIN paiement_factures ON factures.ref = paiement_factures.ref
GROUP BY factures.ref
LIMIT 0 , 30;
mysql_
Messages postés
3
Date d'inscription
jeudi 4 octobre 2007
Statut
Membre
Dernière intervention
4 octobre 2007
4 oct. 2007 à 18:22
4 oct. 2007 à 18:22
reeeeeee
la requette donne le meme resultat que ma première requete postée dans le forum, elle donne un résultat erronné.
exemple:
une facture quii as deux ligne, et réglée en une seule fois, le resultat du sum(paiement_facture.montant) est deux fois la somme payée.
:s :s
marche pas !
la requette donne le meme resultat que ma première requete postée dans le forum, elle donne un résultat erronné.
exemple:
une facture quii as deux ligne, et réglée en une seule fois, le resultat du sum(paiement_facture.montant) est deux fois la somme payée.
:s :s
marche pas !
mysql_
Messages postés
3
Date d'inscription
jeudi 4 octobre 2007
Statut
Membre
Dernière intervention
4 octobre 2007
4 oct. 2007 à 18:38
4 oct. 2007 à 18:38
up !
ce que tu demandes est peut etre impossible en une requete.
A moins de faire un distinct paiement_facture.id
dans le select
la tu verrais si ca crée un doublon.
Mais perso je ferais cela en 2 requetes.
A moins de faire un distinct paiement_facture.id
dans le select
la tu verrais si ca crée un doublon.
Mais perso je ferais cela en 2 requetes.
ce qui donne quoi au final ?
J'ai un problème similaire avec des doublons qui me compte 2 fois trop de ligne (je fais un count au lieu de sum dans mon cas)
J'ai un problème similaire avec des doublons qui me compte 2 fois trop de ligne (je fais un count au lieu de sum dans mon cas)
Il me semble que tu oeux résoudre tous tes probèmes avec une requête du genre :
Deux tables : $tb_commandes='bt_affaire';
$tb_delegues='gt_groupe_utilisateurs';
Ce qui donne :
$cde1 = 'SELECT '.$tbl_delegues.'.id_utilisateur , '.$tbl_delegues.'.nom , '.$tbl_delegues.'.prenom , '.$tbl_delegues.'.telephone , '.$tbl_commandes.'.Receptionnaire, sum('.$tbl_commandes.'.Montant_HT) TotalHT, sum('.$tbl_commandes.'.Montant_TTC) ';
$cde1.=' FROM '.$tbl_commandes.' LEFT JOIN '.$tbl_delegues.'
ON '.$tbl_commandes.'.Receptionnaire = '.$tbl_delegues.'.id_utilisateur ORDER BY TotalHT
GROUP BY '.$tbl_commandes.'.Receptionnaire';
/*
$cde1.=' UNION ';
$cde1 .= 'SELECT '.$tbl_delegues.'.id_utilisateur , '.$tbl_delegues.'.nom , '.$tbl_delegues.'.prenom , '.$tbl_delegues.'.telephone , '.$tbl_commandes.'.Receptionnaire, sum('.$tbl_commandes.'.Montant_HT) , sum('.$tbl_commandes.'.Montant_TTC) ';
$cde1.=' FROM '.$tbl_commandes.' RIGHT JOIN '.$tbl_delegues.' ON '.$tbl_commandes.'.Receptionnaire = '.$tbl_delegues.'.id_utilisateur
GROUP BY '.$tbl_commandes.'.Receptionnaire';
Deux tables : $tb_commandes='bt_affaire';
$tb_delegues='gt_groupe_utilisateurs';
Ce qui donne :
$cde1 = 'SELECT '.$tbl_delegues.'.id_utilisateur , '.$tbl_delegues.'.nom , '.$tbl_delegues.'.prenom , '.$tbl_delegues.'.telephone , '.$tbl_commandes.'.Receptionnaire, sum('.$tbl_commandes.'.Montant_HT) TotalHT, sum('.$tbl_commandes.'.Montant_TTC) ';
$cde1.=' FROM '.$tbl_commandes.' LEFT JOIN '.$tbl_delegues.'
ON '.$tbl_commandes.'.Receptionnaire = '.$tbl_delegues.'.id_utilisateur ORDER BY TotalHT
GROUP BY '.$tbl_commandes.'.Receptionnaire';
/*
$cde1.=' UNION ';
$cde1 .= 'SELECT '.$tbl_delegues.'.id_utilisateur , '.$tbl_delegues.'.nom , '.$tbl_delegues.'.prenom , '.$tbl_delegues.'.telephone , '.$tbl_commandes.'.Receptionnaire, sum('.$tbl_commandes.'.Montant_HT) , sum('.$tbl_commandes.'.Montant_TTC) ';
$cde1.=' FROM '.$tbl_commandes.' RIGHT JOIN '.$tbl_delegues.' ON '.$tbl_commandes.'.Receptionnaire = '.$tbl_delegues.'.id_utilisateur
GROUP BY '.$tbl_commandes.'.Receptionnaire';