Requete SQL qui ne fonctionne pas

Fermé
Uruca Messages postés 96 Date d'inscription dimanche 2 décembre 2012 Statut Membre Dernière intervention 2 octobre 2016 - 5 mars 2014 à 13:22
Uruca Messages postés 96 Date d'inscription dimanche 2 décembre 2012 Statut Membre Dernière intervention 2 octobre 2016 - 8 mars 2014 à 15:36
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

2 réponses

flokocha Messages postés 1510 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 10 octobre 2015 280
5 mars 2014 à 14:33
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)
0
Uruca Messages postés 96 Date d'inscription dimanche 2 décembre 2012 Statut Membre Dernière intervention 2 octobre 2016
Modifié par Uruca le 5/03/2014 à 14:42
et bien, car ce que je fais est un projet pour mes cours et je ne connais pas inner join ^^
je voudrais que ca ressemble à ca

http://www.heberger-image.fr/data/images/19796_Sans_titre_2.png/IMG[/URL]
0
Uruca Messages postés 96 Date d'inscription dimanche 2 décembre 2012 Statut Membre Dernière intervention 2 octobre 2016
5 mars 2014 à 14:44
et le fais de faire sum, va me faire la somme de tous les totaux de chaque table
0
flokocha Messages postés 1510 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 10 octobre 2015 280
5 mars 2014 à 14:47
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
0
Uruca Messages postés 96 Date d'inscription dimanche 2 décembre 2012 Statut Membre Dernière intervention 2 octobre 2016
5 mars 2014 à 15:41
Oui mais le défaut c'est que je ne connais "inner join", je ne l'ai jamais fait en cour, du coup les profs ne voudront pas que je passe par cet attribut... :(
Je pense que je suis sur le bon chemin mais qu'il y a juste un truc qui cloche...
0
flokocha Messages postés 1510 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 10 octobre 2015 280
5 mars 2014 à 17:04
"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
0
Uruca Messages postés 96 Date d'inscription dimanche 2 décembre 2012 Statut Membre Dernière intervention 2 octobre 2016
Modifié par Uruca le 8/03/2014 à 15:36
aurez vous d'autres idées?
car j'essaye de trouver depuis 2h et j'y arrive toujours pas...
0