[SQL] HELP sur une requête SQL

HELP sur une requête SQL [SQL] - Programmation

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 :)

Reply

Marsh Posté le 04-04-2001 à 14:37:15   

Reply

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


---------------
di. / www.diredaredare.org - Ailes de la ville
Reply

Marsh Posté le 04-04-2001 à 14:45:52    

j'oubliais :
pour trier mar montant descendant, tu ajoutes
order by sum(montant_facture) desc


---------------
di. / www.diredaredare.org - Ailes de la ville
Reply

Marsh Posté le 04-04-2001 à 14:52:13    

Un grand merci à toi :)

Reply

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?

Reply

Marsh Posté le 04-04-2001 à 16:32:29    

essayes de faire un  
 
order by sum(montant+1) desc
 
voire si ca marche...

Reply

Marsh Posté le 04-04-2001 à 16:36:01    

le message d'erreur n'a pas bougé d'un iota :(

Reply

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.

Reply

Marsh Posté le 04-04-2001 à 16:44:05    

Ajoute une condition where :
 
where montant_facture <> 0

Reply

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.

Reply

Marsh Posté le 04-04-2001 à 16:45:50   

Reply

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 :D

Reply

Marsh Posté le 04-04-2001 à 16:54:06    

marche pas, marche pas, marche pas :(

Reply

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. :D

Reply

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. :D




 
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.

Reply

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...

Reply

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

Reply

Marsh Posté le 05-04-2001 à 13:52:54    

Je vois ke les sub-select sont ta specialite thegti !!! :D:D:D
 
p.s: T'as vu ce matin... pas un train avt 11h20

Reply

Marsh Posté le 05-04-2001 à 14:01:41    

Ah ah ah !!! :lol: :lol:
Je suis arrivé à 7h39 à la gare
et le train à 7h42
en plus place assise
 
Tranquille :)
 
Par contre, ce soir :( :(

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed