HELP sur une requête SQL [SQL] - Programmation
Marsh Posté le 04-04-2001 à 14:44:01
select
nom_client
,sum(montant_facture)
from tbl_facture
group by nom_client
attention, problème si nom_client n'est pas l'identificateur du client ; ds ce cas, tu cumules les montants de homonymes
Marsh Posté le 04-04-2001 à 14:45:52
j'oubliais :
pour trier mar montant descendant, tu ajoutes
order by sum(montant_facture) desc
Marsh Posté le 04-04-2001 à 16:29:37
J'ai essayé avec et sans le ORDER BY sum(montant_facture) desc.
Sans, ça marche.
Avec, ça me met l'erreur : 0 is not a MySQL result index
Quelle modification dois-je apporter à ma table pour que ça marche?
Marsh Posté le 04-04-2001 à 16:32:29
essayes de faire un
order by sum(montant+1) desc
voire si ca marche...
Marsh Posté le 04-04-2001 à 16:42:12
T'utilises quelle base de donnée? (elles ne gèrent pas toutes les requêtes de la même manière.
Marsh Posté le 04-04-2001 à 16:45:50
C'est du MySQL.
Une petite remarque: j'ai essayé ORDER BY montant_facture desc et ça ne plante pas. Par contre, ce n'est pas vraiment le résultat que j'attends.
Marsh Posté le 04-04-2001 à 16:48:14
Dans le genre "mééthode vaudou" :
Tu peux essayer les alias :
select
"nom" = nom_client,
"somme" = sum(montant_facture)
from tbl_facture
group by nom
order by somme desc
Aucune garantie que ça marche.
Le SQL est un langage somme toute très relatif
Marsh Posté le 04-04-2001 à 16:55:01
a mon avis c a cause du group by kil foire... c ptetre paske ta des client ki nont pas de factures...
Sinon, dans le desespoir, essaye sum(facture)+1 ce ki ne devrai pas marcher mais bon, qd on desespere... on n'a plus rien a perdre.
Marsh Posté le 04-04-2001 à 17:09:07
wouatouwouatou a écrit a écrit : a mon avis c a cause du group by kil foire... c ptetre paske ta des client ki nont pas de factures... Sinon, dans le desespoir, essaye sum(facture)+1 ce ki ne devrai pas marcher mais bon, qd on desespere... on n'a plus rien a perdre. |
waoutou... Dans sa table, tu n'as que deux champs : le client et le montant de la facture. Donc, forcément, le champ "montant" est renseigné...
Sinon, si effectivement tu as raison, alors il faudrait faire un sum (isnull(montant, 0)) pour remplacer toutes les valeurs NULL par des 0.
Ceci dit, Edwige, je te conseille de contacter notre MySQL Master, joce lui-même.
Marsh Posté le 05-04-2001 à 11:31:25
Bon, sur ce que j'ai pu voir en SQL version Oracle et Sybase, l'order by devrait se faire sur ton sum(montant_facture).
Mais il semble que MySQL prenne certaines libertés vis-à-vis des standards...
Marsh Posté le 05-04-2001 à 13:28:05
select TMP.nom, TMP.somme
from
(select
nom = nom_client,
somme = sum(montant_facture)
from tbl_facture
group by nom) TMP
order by TMP.somme desc
Marsh Posté le 05-04-2001 à 13:52:54
Je vois ke les sub-select sont ta specialite thegti !!! D
p.s: T'as vu ce matin... pas un train avt 11h20
Marsh Posté le 05-04-2001 à 14:01:41
Ah ah ah !!!
Je suis arrivé à 7h39 à la gare
et le train à 7h42
en plus place assise
Tranquille
Par contre, ce soir
Marsh Posté le 04-04-2001 à 14:37:15
Imaginons une table tbl_facture avec deux champs: Nom_client et Montant_facture. Un client peut être référencé plusieurs fois dans la table (i.e. il peut avoir plusieurs factures).
Quelle est la requête qui me permettrait d'avoir la liste DESCENDANTE des SOMMES des Montant_facture par Nom_client ?
Par exemple comme résultat :
Dupont 12.340
Perrin 11.988
Martin 10.877
Olivier 8.255
Marc 6.500
...
Merci d'avance pour votre aide