Requete sql

juju0101 -  
KarCAroum Messages postés 274 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous...

un petit peu d'aide svp pour résoudre une requête dont voici le schéma :


CLIENT(CodeCL, NomClient, Adresse, Ville)
PRODUIT(CodeProd, Type, Fournisseur, Prix)
FOURNISSEUR(CodeFourn, NomFornisseur, Adresse, Ville)
COMMANDE(NumCom,Client, Produit, Quantite, Date)
REMISE(Produit, DateDeb, DateFin, PercentageRemise)
La table REMISE contient la remise qui peut être appliqué sur un certain produit pendant un
période déterminé par DateDeb et DateFin.
Les tables comportent les contraintes de clé étrangère suivantes:
- PRODUIT : Fournisseur est lié à CodeForn
- REMISE : Produit est lié à CodeProd
COMMANDE : Client est lié à CodeCL, Produit est lié à CodeProd


La requête étant :

Pour chaque client, afficher ses commandes. Afficher le nom du client, le code du
produit, la quantité commandé, le type du produit et le montant de la commande.
(On ne considère pas des possibles remises sur le prix du produit.)


pour celle-ci je pense que c'est ça :


Select NomClient,CodeProd,Quantité,Type,Prix*Quantite as MontantCommande
from ...jointures...
Group by NomClient




dites-moi si j'ai faux svp


maintenant j'ai cette requete à faire :

Pour chaque client calculer le montant total de ses commandes. Afficher nom,
code client et montant total. (On ne considère pas des possibles remises sur le prix
du produit.).


Je vois pas comment faire la somme du total des commandes...sachant que le total doit être calculé dans le select...



merci d'avance de prendre le temps de me répondre :-)

1 réponse

KarCAroum Messages postés 274 Date d'inscription   Statut Membre Dernière intervention   91
 
BOnjour,
j'ai lu rapidement mais ca semble bon
sauf le group by, il ne doit pas etre utilisé pour enlever les doublons
sinon c'est qu'il ya un probleme de liaison des clefs.
pour une somme tu peux faire un regroupement
par client en prenant sum() de ta 1ere requete
0
juju0101
 
Bonsoir à toi...tu peux m'en dire un peu plus...?

Ok mais je n'en ai jamais fait des comme ça...du moins jpense pas je pourrai avoir la solution ou un exemple ?

Pour le Group by il sert juste à regrouper par client...POUR CHAQUE CLIENT
0
KarCAroum Messages postés 274 Date d'inscription   Statut Membre Dernière intervention   91
 
req1 = Select NomClient,CodeProd,Quantité,Type,Prix*Quantite as MontantCommande
from ...jointures...


Select CodeCL,NomClient,CodeProd,Quantité,Type,sum( MontantCommande)
from req1
group by CodeCL,NomClient,codeprod,quantité,type


j'ai pas le droit de te le faire selon la charte ;)

souviens toi que on met dans le group by tout ce qui n'est pas calculé
(sum, first, count ...)


on garde CodeCL car 2 cleint peuvent avoir le même nom mais 1 commande est faite par 1 seul client
0
juju0101
 
Donc pour cette requête je dois utiliser la requête précédente...c'est bien ça ?

Oui c'est juste pour CodeCl car 2 Client peuvent avoir le même nom

mais on est pas obligé de mettre la suite...codeProd,Quantité,Type...

Je veux pas que tu me le fasse juste comprendre car c'est le sujet de l'an dernier qui est tombé dans ma section donc je veux savoir le faire :-p
0
KarCAroum Messages postés 274 Date d'inscription   Statut Membre Dernière intervention   91
 
tu utilises la 1er requete e n l'emboitant

seelct NomClient,Total
(Select CodeCL,NomClient,CodeProd,Quantité,Type,sum( MontantCommande) total
from (Select NomClient,CodeProd,Quantité,Type,Prix*Quantite as MontantCommande
from ...jointures...)
group by CodeCL,NomClient,codeprod,quantité,type )

edit :

Select codeclient,NomClient,sum(Prix*Quantite) as TotalCommande
from ...jointures...
Group by NomClient


après cela dépend de ton sgbd
0
juju0101
 
Ah ok je connaissais pas cette façon de faire...

Merci bien à toi pour ton aide alors :-) c'est tellement agréable de tomber sur des gens qui t'expliquent...

Bonne soirée et merci encore ;-)
0