cudenetf
Messages postés448Date d'inscriptionmardi 20 septembre 2005StatutMembreDernière intervention26 juillet 2012
-
20 mai 2008 à 14:44
cs_Malkuth
Messages postés268Date d'inscriptionsamedi 22 février 2003StatutMembreDernière intervention24 avril 2013
-
23 mai 2008 à 17:29
bonjour,
lors d'une requete je voudrais recuperer des sommes mais j'ai un probleme (sinon je ne poserais pas la question sur le forum lol)
j'ai une table facture et une table elem_facture ou apparraissent les lignes des factures avec le smontants
pour obtenir le montant de la facture je dois donc faire la somm des lignes
et une table reglement (il peut y avoir plusieurs reglements pour une facture) ou figure egalement le numero d ela facture
voici ma requete pour essayer de savoir quelle facture a été réglé ou non ...
select f.num_fac as num_contrat,sum(ht+tva)
as TTC,sum(montant) from facture as f join elem_fac as e on e.num_fac=f.num_fac
left join reglements as p on p.num_contrat=f.num_fac
where f.num_client=44 group by
f.num_fac, montant
order by f.num_fac
quand il y a une ligne de facture et un montant ca marche
J'ai fait le test sur 2 factures réglées (le reglement est egal au montant de la facture) : les montants sont egal a 50
cas n°1 : 2 lignes de facture , 2 reglements : j'obitens montant_fac=100 , montant_regl=100
cas n°2 : 1 ligne de facture , 2 reglements : j'obtiens montant_fac=50, montant_regl=100
si j'enleve les sum , etc... je vois bien que dans le premier cas on a 4 tuples et dans le second 2 mai sje sais pas comment obtenir le resultat escompté
Comment puis je faire pour obtenir les bons montants ? ( en passant par la fonction sum si possible parc eque c'est un peu relou de devoir passer par un programme qui traite lignepar ligne)
Merci d'avance ...
A voir également:
Madhava de sangamagrama utilise la somme des termes d’une suite pour calculer les décimales du nombre π ; cependant il ne peut en calculer que 11 car :
cs_Malkuth
Messages postés268Date d'inscriptionsamedi 22 février 2003StatutMembreDernière intervention24 avril 20134 23 mai 2008 à 17:29
Le plus evident mais pas forcement le plus optimeser serais des sousrequettes :
select
f.num_fac as num_contrat,
ISNULL((SELECT SUM(e.ht + e.tva) FROM elem_fac AS e WHERE e.num_fac=f.num_fac),0) as TTC_Fact,
ISNULL((SELECT SUM(p.montant) FROM reglements AS p WHERE p.num_contrat=f.num_fac),0) as TTC_Regl
from
facture as f
where
f.num_client=44
order by
f.num_fac;