djp1988 Posté 23 Mai 2008 Partager Posté 23 Mai 2008 Bonjour, je dois réaliser une requête pour rechercher le montant des impayés pour les clients de mon entreprise dans un projet au lycée, j'ai rencontré un problème puisque je cherche à avoir une seul ligne par client, mais un client a plusieurs articles par commande donc je finis avec le même nombre de lignes que le nombre de commandes par client, et je n'arrive pas à faire la somme de ces lignes pour obtenir qu'une ligne par client, voici ma requête: SELECT num_com, (nom_cli + " " + prénom_cli), (quant_det*prix_det) AS PrixFROM Détail_commande, Commandes, ClientsWHERE Détail_commande.numcom_det = Commandes.num_comAND Commandes.num_cli_com = Clients.num_cliAND reg_com = FALSE reg_com c'est pour vérifier si oui ou non il a payé Résultat CODE num_com Expr1001 Prix104 Castro Roque 734,40 104 Castro Roque 1 639,46 104 Castro Roque 4 967,78 104 Castro Roque 452,51 104 Castro Roque 2 157,82 104 Castro Roque 39,85 286 Lamarche Rodriguez 70,20 286 Lamarche Rodriguez 64,70 286 Lamarche Rodriguez 43,09 286 Lamarche Rodriguez 1 112,18 286 Lamarche Rodriguez 90,50 286 Lamarche Rodriguez 194,29 286 Lamarche Rodriguez 205,09 286 Lamarche Rodriguez 367,10 286 Lamarche Rodriguez 92,66 286 Lamarche Rodriguez 64,70 286 Lamarche Rodriguez 84,04 286 Lamarche Rodriguez 17,06 286 Lamarche Rodriguez 6 458,40 362 Hamel Ronaldo 140,16 362 Hamel Ronaldo 93,85 362 Hamel Ronaldo 124,09 401 Jarry Uriel 49,08 401 Jarry Uriel 84,04 401 Jarry Uriel 57,13 434 Finot Soraya 81,86 434 Finot Soraya 593,78 434 Finot Soraya 1 250,64 434 Finot Soraya 63,67 434 Finot Soraya 323,76 769 Grimoux Siranouche 10,80 769 Grimoux Siranouche 896,18 769 Grimoux Siranouche 2 546,64 769 Grimoux Siranouche 194,18 769 Grimoux Siranouche 172,70 781 Flament Lewis 202,82 781 Flament Lewis 226,70 887 Vincent Shanone 19,86 887 Vincent Shanone 439,14 887 Vincent Shanone 1 077,84 887 Vincent Shanone 32,38 887 Vincent Shanone 107,89 887 Vincent Shanone 278,64 887 Vincent Shanone 376,92 958 Guibert Smina 280,69 958 Guibert Smina 15,97 958 Guibert Smina 204,98 958 Guibert Smina 204,98 958 Guibert Smina 646,92 958 Guibert Smina 204,98 958 Guibert Smina 354,24 958 Guibert Smina 429,84 958 Guibert Smina 399,60 1323 Feuquières Majorie 99,14 1323 Feuquières Majorie 306,52 1323 Feuquières Majorie 23 224,40 1323 Feuquières Majorie 77,32 1323 Feuquières Majorie 75,48 1323 Feuquières Majorie 114,26 1323 Feuquières Majorie 114,38 1323 Feuquières Majorie 431,78 1323 Feuquières Majorie 103,33 1324 Desmousseau Sounia 12,85 1324 Desmousseau Sounia 97,15 1324 Desmousseau Sounia 77,66 1324 Desmousseau Sounia 70,20 1324 Desmousseau Sounia 667,44 1324 Desmousseau Sounia 160,92 1423 Bernard Igon 1 265,84 1423 Bernard Igon 194,29 1423 Bernard Igon 290,52 1423 Bernard Igon 127,34 1423 Bernard Igon 56,04 1423 Bernard Igon 373,48 1423 Bernard Igon 118,69 2346 Plumkett et fils Domange 19,33 2346 Plumkett et fils Domange 24,79 2346 Plumkett et fils Domange 473,04 2346 Plumkett et fils Domange 645,84 2346 Plumkett et fils Domange 43,09 2367 Braire Maite 51,62 2367 Braire Maite 318,61 2367 Braire Maite 55,62 2367 Braire Maite 278,64 2367 Braire Maite 75,48 2367 Braire Maite 188,95 2465 Cappe Sihame 53,89 2465 Cappe Sihame 258,98 2465 Cappe Sihame 32,18 2465 Cappe Sihame 64,58 2465 Cappe Sihame 269,78 2465 Cappe Sihame 107,89 2465 Cappe Sihame 17,08 2480 Tress Shelanda 194,35 2480 Tress Shelanda 567,00 2480 Tress Shelanda 268,92 2480 Tress Shelanda 29,05 2480 Tress Shelanda 1 704,24 2480 Tress Shelanda 75,38 2480 Tress Shelanda 185,54 2480 Tress Shelanda 386,66 2480 Tress Shelanda 1 933,20 2556 Castex Loig 7,83 2556 Castex Loig 66,42 2556 Castex Loig 1 059,18 2556 Castex Loig 129,52 2556 Castex Loig 204,12 2556 Castex Loig 76,63 2556 Castex Loig 25,70 2776 Société des Glacières de Paris Stephie 271,94 2776 Société des Glacières de Paris Stephie 94,60 2776 Société des Glacières de Paris Stephie 367,20 2776 Société des Glacières de Paris Stephie 142,34 2776 Société des Glacières de Paris Stephie 30,19 2843 Lebel Urtsin 430,92 2843 Lebel Urtsin 117,72 2843 Lebel Urtsin 84,04 2843 Lebel Urtsin 248,18 2894 Richard Dianthe 553,93 2894 Richard Dianthe 21,50 2894 Richard Dianthe 15,08 2894 Richard Dianthe 59,40 2894 Richard Dianthe 45,25 2894 Richard Dianthe 213,84 2894 Richard Dianthe 99,14 2894 Richard Dianthe 210,60 2906 Barrier Sherley 226,58 2906 Barrier Sherley 57,13 2906 Barrier Sherley 86,30 2906 Barrier Sherley 211,46 2983 Gosset Rogel 1 547,42 2983 Gosset Rogel 604,58 2983 Gosset Rogel 321,84 2983 Gosset Rogel 408,24 2983 Gosset Rogel 81,86 2983 Gosset Rogel 107,89 2983 Gosset Rogel 85,64 merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
steph29 Posté 23 Mai 2008 Partager Posté 23 Mai 2008 un truc du genre? SELECT num_com, (nom_cli + " " + prénom_cli), SUM((quant_det*prix_det)) AS PrixFROM Détail_commande, Commandes, ClientsWHERE Détail_commande.numcom_det = Commandes.num_comAND Commandes.num_cli_com = Clients.num_cliAND reg_com = FALSEGROUP BY num_com Lien vers le commentaire Partager sur d’autres sites More sharing options...
djp1988 Posté 23 Mai 2008 Auteur Partager Posté 23 Mai 2008 Non, j'ai cette erreur: Vous avez essayé d'exécuter une requête ne comprenant pas l'expression spécifiée 'quant_det*prix_det' comme une partie de la fonction d'agrégat. Lien vers le commentaire Partager sur d’autres sites More sharing options...
steph29 Posté 23 Mai 2008 Partager Posté 23 Mai 2008 en effet sum ne fait pas de calcul avant... SELECT num_com, (nom_cli + " " + prénom_cli), (quant_det*prix_det) AS Prix,SUM(Prix) as totalFROM Détail_commande, Commandes, ClientsWHERE Détail_commande.numcom_det = Commandes.num_comAND Commandes.num_cli_com = Clients.num_cliAND reg_com = FALSEGROUP BY num_com et ca? Lien vers le commentaire Partager sur d’autres sites More sharing options...
djp1988 Posté 23 Mai 2008 Auteur Partager Posté 23 Mai 2008 Non c'est la même erreur Lien vers le commentaire Partager sur d’autres sites More sharing options...
steph29 Posté 23 Mai 2008 Partager Posté 23 Mai 2008 tu peut nous faire un export des structures de tes tables et avec quelques valeur pour pouvoir faire des tests? Lien vers le commentaire Partager sur d’autres sites More sharing options...
djp1988 Posté 23 Mai 2008 Auteur Partager Posté 23 Mai 2008 (modifié) Détail_commande(numcom_det, numpro_det, quant_det, prix_det) Commandes(num_com, date_com, num_cli_com, modereg_com, reg_com, numsal_com) Clients(num_cli, nom_cli, prénom_cli, numad_cli, rue_cli, cp_cli, ville_cli, type_cli, condition_cli) Détail_commande Exemple de donnée: numcom_det numpro_det quant_det prix_det 1 549 1 269,89 1 690 2 210,60 1 2212 2 422,28 2 845 2 50,65 Commandes Exemple de donnée: num_com date_com num_cli_com modereg_com reg_com numsal_com 1 17/06/2007 1322 Carte bancaire Oui 16 2 21/10/2007 1488 Chèque Oui 16 3 02/09/2007 1263 Carte bancaire Oui 16 Clients Exemple de donnée: num_cli nom_cli prénom_cli numad_cli rue_cli cp_cli ville_cli type_cli condition_cli 1 Abadie Sirine 6 Rue François-Arago 08360 Saint Fergeux A 1 2 Fourmestreaux Benoist 6 Allée de la Gare 75011 Paris 11e Arrondissement A 1 3 Oster Bechir 4 Allée de la Gare 09500 Saint Julien de Gras Capou A 1 4 Potier (de) Lahbib 18 Allée de la Gare 55160 Manheulles A 1 Modifié 23 Mai 2008 par djp1988 Lien vers le commentaire Partager sur d’autres sites More sharing options...
steph29 Posté 23 Mai 2008 Partager Posté 23 Mai 2008 je suppose que ton prix_det est un varchar :S je ne voix pas comment tes resultats peuvent etre juste... avec des valeurs de ce type: 269,89 € ca ne sert a rien de chercher plus loin du coté de mysql... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Portekoi Posté 23 Mai 2008 Partager Posté 23 Mai 2008 SELECT num_com, (nom_cli + " " + prénom_cli), SUM(quant_det*prix_det) AS PrixFROM Détail_commande as detail inner join Commandes as com on detail.numcom_det = com.num_comInner join Clients as cli on Com.num_cli_com = Cli.num_cliWHERE reg_com = FALSEGROUP BY num_com, (nom_cli + " " + prénom_cli) Lien vers le commentaire Partager sur d’autres sites More sharing options...
steph29 Posté 23 Mai 2008 Partager Posté 23 Mai 2008 bien vu! mon idee de depart etait la bonne, je l'ai abandonnée trop tot mais le probleme reste entier sur la pertinence des donnees avec un prix en varchar de type 269,89 € Lien vers le commentaire Partager sur d’autres sites More sharing options...
Portekoi Posté 23 Mai 2008 Partager Posté 23 Mai 2008 Ton idée était la bonne mais il y a des normes en SQL à apprendre. Apprends les et tu sauras mettre à exécution tes idées Pour le varchar, rien ne l'empêche de faire un CAST. Lien vers le commentaire Partager sur d’autres sites More sharing options...
djp1988 Posté 23 Mai 2008 Auteur Partager Posté 23 Mai 2008 Je travail sur Access, donc c'est simplement de type numérique, par contre le sql proposer me donne une erreur "Erreur de Synthaxe dans l'expression 'detail.numcom_det = com.num_com Inner join Clients as cli on Com.num_cli_com = Cli.num_cli' " Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant