Problème avec un SUM()

Résolu
nakuni Messages postés 3 Date d'inscription mardi 8 mars 2005 Statut Membre Dernière intervention 12 novembre 2008 - 31 oct. 2008 à 10:39
nakuni Messages postés 3 Date d'inscription mardi 8 mars 2005 Statut Membre Dernière intervention 12 novembre 2008 - 12 nov. 2008 à 16:41
Bonjour à tous, j'ai un niveau assez faible en SQL et là je bloque complètement sur un problème depuis hier.

Voici mes tables (avec juste les champs qui nous intéresse) utilisées:
clients(num_cli, nom_cli, prenom_cli)
commandes(num_com, date_com, #num_cli)
commandes_prod(num_cp, ref_cp,  prix_cp, #num_com)

(commandes_prod contient entre autre les produits d'une commande et leurs prix etc.)

Mon but est d'afficher la liste des clients dans un tableau, avec dans une colonne le prix total de leurs commandes passées.
Voici ma requête actuelle:
SELECT sum(cp.prix_cp) as test, cl.nom_cli, cl.prenom_cli, co.date_com
FROM commandes_prod cp , commandes co, clients clWHERE cp.num_com co.num_com AND co.num_cli cl.num_cli
GROUP BY cl.nom_cli
ORDER BY nom_cli asc


Alors le problème est que les clients qui n'ont jamais passé de commande ne s'affichent pas, je n'arrive pas à trouver de solution "propre". Je travail avec MySQL 5. Merci à ceux qui se pencheront sur mon problème ;)

3 réponses

nakuni Messages postés 3 Date d'inscription mardi 8 mars 2005 Statut Membre Dernière intervention 12 novembre 2008
31 oct. 2008 à 15:09
Je m'auto-répond car j'ai trouvé la solution! Il fallait utiliser un RIGHT JOIN, pour info voici ma requête finale (si ça peut aider quelqu'un...)

SELECT sum(cp.prix_cp) as total, cl.num_cli, cl.nom_cli, cl.prenom_cli, cl.date_ins_cli
FROM commandes_prod cp
JOIN commandes co ON cp.num_com = co.num_com
RIGHT JOIN clients cl ON co.num_cli = cl.num_cli
GROUP BY cl.nom_cli    
ORDER BY nom_cli asc
3
cs_jimmy69 Messages postés 778 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 27 novembre 2008 1
12 nov. 2008 à 16:05
salut salut,

Oui si tu ne precises rien dans ton from et qu'il y'a plusieurs tables il te fait d'office un inner join

col id table 1 = col id table 2 en gros !

si cela t'interesse voici un article tres interessant :

http://sqlpro.developpez.com/cours/sqlaz/jointures/

bonne journée
Christophe
0
nakuni Messages postés 3 Date d'inscription mardi 8 mars 2005 Statut Membre Dernière intervention 12 novembre 2008
12 nov. 2008 à 16:41
Merci bien, je lirais ça quand j'aurai récupéré mon cerveau car là je suis balade.
0
Rejoignez-nous