|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre du Club
![]() Développeur informatique Inscription : septembre 2005 Messages : 145 ![]() |
Bonjour a tous,
je souhaite faire faire des jointures externe entre 3 tables et je recupere de ces tables les fonctions SUM(). Mon probleme est que cela fonction quand je le fais sur les tables séparement c'est a dire juste entre 2 tables mais quand je fais ma requete avec les 2 jointures externes, il ne me sort pas les bon resultats... voic ma requete Code :
Merci pour votre aide Tzoulou |
||
|
|
00
|
|
|
#2 | |||
|
Expert Confirmé
![]() ![]() |
Salut,
Merci de respecter les CONSEILS... à lire AVANT de POSTER et de préciser ton SGBD stp Citation:
Je pense qu'il faudrait que tu applique une fonction COALESCE (ou autre selon ton SGBD) qui transforme les valeur NULL en 0. Ex : Code :
__________________
"Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément." Nicolas Boileau "Expliquer empêche de comprendre si cela dispense de chercher" Quiz Oracle : venez tester vos connaissances ! |
|||
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() Développeur informatique Inscription : septembre 2005 Messages : 145 ![]() |
désolé, je suis sur SQL server
1) les resultats qu'il me resort sont faux car il double tout. quand je fais ces requete separement les resultats sont bon mais quand je les assemble il fait la somme des doublons donc j'ai essayé de passer par SUM(DISTINCT) mais dans ce cas il me supprime certain doublon qui ne sont pas de doublons du au mauvais resultats 2) voila ce que je veux au final j'ai une table avec deux champs principaux Vue_Client_Facture_Avoir (contrat, Facturé) Excel_CTR_FACTU_SPEC_Avoirs (contrat, Avoir) je veux faire la somme des Facturé par contrat donc SUM avec un GROUP BY et meme chose pour Excel_CTR_FACTU_SPEC_Avoirs et une fois les sommes effectués je veux les regroupe avec une autre table pour avoir par contrat mes infos venant de Vue_Ctr_Anniversaire et le total de facture et d'avoir par contrat j'espere etre assez clair si ce n'est pas le cas dites le moi Merci |
|
|
00
|
|
|
#4 | ||
|
Expert Confirmé
![]() ![]() |
c'est normal qu'il double les résultats, fais ta requête sans les SUM et le GROUP BY, et cumule les lignes, tu obtiendras bien le double de tes montants si tu as un enregistrement dans chacune de tes table "Avoir".
La solution passe par des sous-requêtes, qui vont te calculer tes montants : est-ce que la requête ci-dessous te ramène un résultat juste ? Code :
Si non, explique-nous tes soucis
__________________
"Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément." Nicolas Boileau "Expliquer empêche de comprendre si cela dispense de chercher" Quiz Oracle : venez tester vos connaissances ! |
||
|
|
00
|
|
|
#5 | ||
|
Membre du Club
![]() Développeur informatique Inscription : septembre 2005 Messages : 145 ![]() |
ta solution passe, je ne savais pas qu'on pouvait lié les conditions d'une sous requete avec la requete mere, je suis etonné...
et ton group by et sous entendu par le lien entre la requete et la sous requete pas mal ! mais c'est assez chaud ! moi j'etais parti sur une autre piste car l'execution est assez longue. toujour en faisant une jointure mais au lieu de faire reference a une table je fais reference a une sous requete dis moi ce que tu en penses ca marche pour un maintenant je teste pour voir avec les 2 Code :
|
||
|
|
00
|
|
|
#6 |
|
Membre du Club
![]() Développeur informatique Inscription : septembre 2005 Messages : 145 ![]() |
oui ca peut paraitre bizarre d'avoir deux fois la vue une fois dans la reqquete et une seconde fois dans la sous requete mais j'en ai besoin dans mes conditions
|
|
|
00
|
|
|
#7 |
|
Membre du Club
![]() Développeur informatique Inscription : septembre 2005 Messages : 145 ![]() |
Et bien cette solution a bien fonctionné, je ne sais pas si c'est tres academique mais en tout cas cela fonctionne j'ai donc fait des sous requete que j'ai lié a une table avec des jointures externes
bon il fallu que je synchronise quelques champs pour eviter des doublons mais tout est OK Merci pour ton aide Xo |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com