Requete SQL qui ne fonctionne pas
Uruca
Messages postés
102
Statut
Membre
-
Uruca Messages postés 102 Statut Membre -
Uruca Messages postés 102 Statut Membre -
Bonjour,
j'aimerais savoir pourquoi je n'obtient pas le résultat attendu...
Je pense que mes opérateurs ne sont pas bons dans mon es requêtes imbriquées
Voici ma requête:
CREATE or replace VIEW VImpayes as
select VCEC.numtable, VCC.total as totalmenu, VCM.total as totalcarte, (VCC.total+VCM.total) as montanttotal
from VCommandesEnCours VCEC,VCommandesCarte VCC,VCommandesMenu VCM
where (VCC.numtable,VCC.total) in (
select numtable, sum(total)
from VCommandesCarte
group by numtable)
and
(VCM.numtable,VCM.total) in (
select numtable, sum(total)
from VCommandesMenu
group by numtable);
Voici les autres vues qui marchent correctement :
Create or replace view VCommandesCarte(numtable, nb, nomcrepe, prix, total) as
select CmC.numtable, CmC.nb, CmC.nomCrepe, Cr.prixCarte as prix, (CmC.nb * Cr.prixCarte) as total
from Crepe Cr, CommandeCarte CmC
where CmC.Paye='non' and CmC.NomCrepe=Cr.NomCrepe
order by CmC.numtable;
Create or replace view VCommandesMenu(numtable, nb, nommenu, prix, total) as
select distinct CmM.numtable, CmM.nb, CmM.nomMenu, M.prixtotalmenu as prix, (CmM.nb * M.prixTotalMenu) as total
from Crepe Cr, CommandeMenu CmM, Menu M
where CmM.Paye='non' and CmM.NomMenu=M.NomMenu
order by CmM.numtable
Les résultats obtenus devraient etre
table 1 :total crepe= 31 total menu = 22
table 2: total crepe= 30 total menu = 50
table 3: total crepe= 0 total menu = 65
Ici j'obtient pour les 3 tables :
30/50 total: 80
Si vous avez besoin de plus d'informations, dites moi,
Merci de votre aide,
Cordialement
j'aimerais savoir pourquoi je n'obtient pas le résultat attendu...
Je pense que mes opérateurs ne sont pas bons dans mon es requêtes imbriquées
Voici ma requête:
CREATE or replace VIEW VImpayes as
select VCEC.numtable, VCC.total as totalmenu, VCM.total as totalcarte, (VCC.total+VCM.total) as montanttotal
from VCommandesEnCours VCEC,VCommandesCarte VCC,VCommandesMenu VCM
where (VCC.numtable,VCC.total) in (
select numtable, sum(total)
from VCommandesCarte
group by numtable)
and
(VCM.numtable,VCM.total) in (
select numtable, sum(total)
from VCommandesMenu
group by numtable);
Voici les autres vues qui marchent correctement :
Create or replace view VCommandesCarte(numtable, nb, nomcrepe, prix, total) as
select CmC.numtable, CmC.nb, CmC.nomCrepe, Cr.prixCarte as prix, (CmC.nb * Cr.prixCarte) as total
from Crepe Cr, CommandeCarte CmC
where CmC.Paye='non' and CmC.NomCrepe=Cr.NomCrepe
order by CmC.numtable;
Create or replace view VCommandesMenu(numtable, nb, nommenu, prix, total) as
select distinct CmM.numtable, CmM.nb, CmM.nomMenu, M.prixtotalmenu as prix, (CmM.nb * M.prixTotalMenu) as total
from Crepe Cr, CommandeMenu CmM, Menu M
where CmM.Paye='non' and CmM.NomMenu=M.NomMenu
order by CmM.numtable
Les résultats obtenus devraient etre
table 1 :total crepe= 31 total menu = 22
table 2: total crepe= 30 total menu = 50
table 3: total crepe= 0 total menu = 65
Ici j'obtient pour les 3 tables :
30/50 total: 80
Si vous avez besoin de plus d'informations, dites moi,
Merci de votre aide,
Cordialement
2 réponses
-
J'ai peut-être mal compris ce que tu voulais faire, mais pourquoi ne pas faire une simple requête comme celle-ci :
CREATE or replace VIEW VImpayes as
select numtable, sum(VCM.total) as totalmenu, sum(VCC.total) as totalcarte, sum(VCM.total) + sum(VCC.total) as montanttotal
from VCommandesEncours
inner join VCommandesCarte as VCC using(numtable)
inner join VCommandesMenu as VCM using(numtable)-
-
-
J'ai juste oublié le group by numtable à la fin. :)
Donc :
CREATE or replace VIEW VImpayes as
select numtable, sum(VCM.total) as totalmenu, sum(VCC.total) as totalcarte, sum(VCM.total) + sum(VCC.total) as montanttotal
from VCommandesEncours
inner join VCommandesCarte as VCC using(numtable)
inner join VCommandesMenu as VCM using(numtable)
group by numtable -
-
"inner join" n'est qu'une syntaxe équivalente à ce que tu fais lorsque tu sépares tes tables par des virgules.
Tu peux donc reformuler la requête ainsi :
CREATE or replace VIEW VImpayes as
select numtable, sum(VCM.total) as totalmenu, sum(VCC.total) as totalcarte, sum(VCM.total) + sum(VCC.total) as montanttotal
from VCommandesEncours as VCE, VCommandesCarte as VCC, VCommandesMenu as VCM
where VCE.numtable = VCC.numtable and VCE.numtable = VCM.numtable
group by numtable
-
-
aurez vous d'autres idées?
car j'essaye de trouver depuis 2h et j'y arrive toujours pas...