|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre habitué
![]() Inscription : mai 2008 Messages : 285 ![]() |
Bonjour à tous,
J'ai un problème avec le morceau de la requête suivante: Code :
SUM(CASE WHEN od.id_achat_articles<>0 THEN DISTINCT(montant_total) ELSE od.debit END) AS depense Code :
Voici ma table: ![]() L'alias depense doit être égal à 66.53 (19.71+41.32+5.50). EDIT> En faite j'aimerais plutôt faire un DISTINCT(id_achat_articles) et calculer la somme de od.montant_total. Merci pour votre aide |
||
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 669 ![]() |
bonjour,
Et où qu'il est le group by ? Sinon pourquoi avez-vous des doublons dans votre table d'opération bancaire ...? |
|
|
00
|
|
|
#3 | ||||||
|
Membre habitué
![]() Inscription : mai 2008 Messages : 285 ![]() |
Merci punkoff pour ta réponse,
le group by je l'utilise ensuite pour faire des tries par ans, mois, semaines, jours. Enfaite, je n'ai pas de doublon, c'est juste que je n'ai pas mis tous les champs. Car l'aperçu de la table c'est enfaite le résultat de la jointure. Je viens de mettre a jour la tableau ci-dessus obtenu avec la requête: Code :
Cela dit en cherchant plus profondement, j'ai trouvé quelquechose que ressemble: Code :
SUM(DISTINCT(CASE WHEN od.id_achat_articles<>0 THEN od.montant_total END))+SUM(CASE WHEN od.id_achat_articles=0 THEN od.montant_total END) AS depense Cependant j'ai un problème de résultat avec le group by: Code :
date | nombre | depense | depense_liquide 2011-07-27 18:31:01 | 84 | 8072.13 | 236.32 2012-01-08 23:32:29 | 31 | 1605.79 | 238.68 Groupement des 2 années 8072.13+1605.79=9677.92 Même période, même calcul mais sans le group by, devrait retrouver exactement 9677.92 Avec cette requête: Code :
date | nombre | depense | depense_liquide 2011-07-27 18:31:01 | 115 | 9624.17 | 475.00 Sans le group by 9624.17, donc différent de 9677.92 Comment expliquer ce type de problème ? La requête que j'aurais mis pour la dépense serait fausse? Merci |
||||||
|
|
00
|
|
|
#4 | ||
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 669 ![]() |
Bonjour,
votre dernière requête n'a pas de sens. Code :
MySql étant très permissif sur les syntaxes utilisables, je ne sais pas ce qu'il ramène. Maintenant, je vous proposerai plutôt que vous nous décriviez un peu mieux vos deux tables et ce que vous cherchez à faire (sans simplifier) |
||
|
|
00
|
|
|
#5 | ||||
|
Membre habitué
![]() Inscription : mai 2008 Messages : 285 ![]() |
Voici la structure de mes tables:
-- -- Structure de la table `achat_articles` -- Code :
-- Structure de la table `operation_depenses` -- Code :
Code :
ON operation_depenses.id_achat_articles=achat_articles.id_achat -Lorsque je valide cet achat cela me créer une ligne dans la table operation_depenses avec l'id de l'achat. -Seulement je souhaite appliquer des filtres par articles dans mes achats. Donc j'utilise une jointure de table pour connaitre mes dépenses par filtres. Et ainsi filtrer les articles dans la table achat_articles. Je fais des synthèses des achats par année, mois, jours... Avec l'utilisation de Group BY, j'utilise donc réellement toujours group by |
||||
|
|
00
|
|
|
#6 |
|
Membre habitué
![]() Inscription : mai 2008 Messages : 285 ![]() |
Je re-poste pour clôturer ce sujet.
J'ai ré-établi un cahier des charges sur toutes les solutions possibles! J'ai voulu écrire une seule requête pour toutes les solutions en y mettant des conditions. Je me suis rendu compte que je cherchais a trouver une requête trop complexe. Je vais donc tous reconstruire! Merci quand même pour votre patience, Salutations |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com