.dsy:it.
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)


Posted by ste182 on 16-01-2009 15:09:

[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


Posted by gae84 on 16-01-2009 15:36:

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
)


Posted by ste182 on 16-01-2009 15:52:

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
)

non capisco la condizione WHERE CodVend=cod
cod l'hai definito da CodVend quindi sarà sempre uguale... no?

__________________
Live Fast, Die Fun


Posted by ste182 on 16-01-2009 16:11:

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


Posted by ste182 on 16-01-2009 17:34:

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??:?:D

__________________
Live Fast, Die Fun


Posted by ste182 on 16-01-2009 17:39:

ennò cavoli non và bene.. ragazzi aiutoooooooooooooo!!

__________________
Live Fast, Die Fun


Posted by Counter65 on 16-01-2009 20:37:

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


Posted by morte2097 on 17-01-2009 09:42:

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


Posted by morte2097 on 17-01-2009 09:44:

non ho kiuso la parentesi tonda della query interna!


Posted by R1cky` on 17-01-2009 13:08:

Io l'ho fatta in questo modo: http://pastebin.com/m7d01f7d2


Posted by morte2097 on 17-01-2009 13:52:

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.