nakuni
Messages postés3Date d'inscriptionmardi 8 mars 2005StatutMembreDernière intervention12 novembre 2008
-
31 oct. 2008 à 10:39
nakuni
Messages postés3Date d'inscriptionmardi 8 mars 2005StatutMembreDernière intervention12 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 ;)
nakuni
Messages postés3Date d'inscriptionmardi 8 mars 2005StatutMembreDernière intervention12 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