Requete sql
juju0101
-
KarCAroum Messages postés 298 Statut Membre -
KarCAroum Messages postés 298 Statut Membre -
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 :
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 :-)
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
-
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-
-
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 -
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 -
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 -
-