Homepage  Il progetto dsy.it è l'unofficial support site dei corsi di laurea del Dipartimento di Scienze dell'Informazione e del Dipartimento di Informatica e Comunicazione della Statale di Milano. E' un servizio degli studenti per gli studenti, curato in modo no-profit da un gruppo di essi. I nostri servizi comprendono aree di discussione per ogni Corso di Laurea, un'area download per lo scambio file, una raccolta di link e un motore di ricerca, il supporto agli studenti lavoratori, il forum hosting per Professori e studenti, i blog, e molto altro...
In questa sezione è indicizzato in textonly il contenuto del nostro forum


.dsy:it. .dsy:it. Archive > Didattica > Corsi A - F > Basi di dati ~ informatica triennale
 
[aiuto!] Sql
Clicca QUI per vedere il messaggio nel forum
ste182
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???

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
)

ste182
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?

ste182
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)
)

ste182
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

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

Counter65
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

morte2097
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

morte2097
non ho kiuso la parentesi tonda della query interna!

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

morte2097
si va bene comunque, un pò più complessa da vedere ma va benissimo!

Powered by: vbHome (lite) v4.1 and vBulletin v2.3.1 - Copyright ©2000 - 2002, Jelsoft Enterprises Limited
Mantained by dsy crew (email) | Collabora con noi | Segnalaci un bug | Archive | Regolamento |Licenze | Thanks | Syndacate