![]() |
Show 150 posts per page |
.dsy:it. (http://www.dsy.it/forum/)
- Basi di dati ~ informatica triennale (http://www.dsy.it/forum/forumdisplay.php?forumid=211)
-- [aiuto!] Sql (http://www.dsy.it/forum/showthread.php?threadid=37391)
[aiuto!] Sql
ciao ragazzi, voi come risolvereste questo esercizio?
Vendita(CodVend,CodCli,CodProd,Qta)
Venditore(Codice,Nome,Città')
Cliente(CodiceCli,NomeCli,CittàCli)
determinare il venditore di Verona che ha venduto la maggior quantità complessiva di prodotti nella base di dati..
io ho pensato di fare la somma delle Qta raggruppandoli per CodVend così:
SELECT SUM(Qta)
FROM Vendita
GROUP by CodVend
così ricavo una tabella con la somma delle quantità per ogni venditore(CodVend).. poi però come faccio a prendere solo il venditore di verona con il max di quantità venduta???
__________________
Live Fast, Die Fun
penso sia così, anche se magari c'è qualke errore..... come idea generale cmq devi dirgli di ritornare il venditore per il quale nn ci sono altri venditori con vendite personali maggiori alle sue, oppure, detto in altra maniera, devi trovare il venditore che ha venduto una quantità di articoli maggiore di tutte le altre vendite personali all'interno del database
SELECT CodVend AS cod, SUM(QTA) AS tot FROM Vendita WHERE CodVend=cod AND SUM(QTA) > ALL (
SELECT SUM(QTA) FROm Vendita GROUP BY CodVend
)
Originally posted by gae84
penso sia così, anche se magari c'è qualke errore..... come idea generale cmq devi dirgli di ritornare il venditore per il quale nn ci sono altri venditori con vendite personali maggiori alle sue, oppure, detto in altra maniera, devi trovare il venditore che ha venduto una quantità di articoli maggiore di tutte le altre vendite personali all'interno del database
SELECT CodVend AS cod, SUM(QTA) AS tot FROM Vendita WHERE CodVend=cod AND SUM(QTA) > ALL (
SELECT SUM(QTA) FROm Vendita GROUP BY CodVend
)
__________________
Live Fast, Die Fun
ho pensato di fare così, ditemi se può funzionare:
SELECT CodVend as Codice, SUM(Qta) as Totale
FROM Vendita
WHERE CodVend in
(
SELECT Codice as CodVend, SUM(Qta)
FROM Venditore, Vendita
WHERE Città= "Verona" AND SUM(Qta) > ALL (SELECT SUM(Qta) FROM VENDITA GROUP by CodVend)
)
__________________
Live Fast, Die Fun
oppure meglio questo:
SELECT Codice
FROM Venditore INNER JOIN Vendita ON Codice=CodVend
WHERE Venditore.Città="Verona" AND Qta = MAX(SELECT SUM(Qta) FROM Vendita GROUP by CodVend)
che dite?? sto sparando solo cavolate o potrebbe avere senso??
__________________
Live Fast, Die Fun
ennò cavoli non và bene.. ragazzi aiutoooooooooooooo!!
__________________
Live Fast, Die Fun
SELECT CodVend AS cod, SUM(QTA) AS tot FROM Vendita WHERE CodVend=cod AND SUM(QTA) >= ALL (
SELECT SUM(QTA) FROm Vendita GROUP BY CodVend
)
quello che ha scritto gae è giusto manca solo l'uguale dopo il maggiore
scusa non vorrei dire una cavolata ma sum(qta) >=all dovresti porlo nell'having non nel where e poi devi confrontarli con quelli della città di verona , secondo me sarebbe
SELECT Vendita.CodVend , SUM(Qta)
FROM Vendita,Venditore
WHERE Vendita.CodVend = Venditore.Codice AND
Venditore.città= "verona"
GROUP BY Vendita.CodVend
HAVING SUM(Qta) >= ALL (
SELECT SUM(Qta)
FROM Vendita,Venditore
WHERE Vendita.CodVend = Venditore.Codice
AND Venditore.città= "verona"
GROUP BY Vendita.CodVend
non ho kiuso la parentesi tonda della query interna!
Io l'ho fatta in questo modo: http://pastebin.com/m7d01f7d2
si va bene comunque, un pò più complessa da vedere ma va benissimo!
All times are GMT. The time now is 07:55. | Show all 11 posts from this thread on one page |
Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.