PDA

View Full Version : Query SQL


misterx
14-05-2007, 13:48
E' giusta secondo voi la mia soluzione ?

Problema
Si consideri il seguente schema relazionale (le chiavi primarie sono sottolineate):

VENDITA(CodVend,CodCli,CodProd,Qta)
VENDITORE(Codice,Nome, Cittą)
CLIENTE(CodiceCli,NomeCli,CittąCli)

Domanda
determinare il venditore di Verona che ha venduto la maggiore quantitą complessiva di
prodotti nella base di dati.


Soluzione

SELECT CodVend FROM
SELECT CodVend FROM VENDITA WHERE
CodVend = (SELECT Codice FROM VENDITORE WHERE Cittą = 'Verona')
GROUP BY CodVend MAX(COUNT(*))

0rph3n
14-05-2007, 14:14
ma join e having te li devono ancora insegnare?

yorkeiser
14-05-2007, 14:18
non conviene annidare troppe select, rischi di rallentare l'esecuzione della query

SELECT a.codice, b.qta
from venditore a, vendita b
where
a.codice = b.codvend and
b.qta = max(b.qta)

0rph3n
14-05-2007, 15:25
SELECT a.codice, b.qta
from venditore a, vendita b
where
a.codice = b.codvend and
b.qta = max(b.qta)

ma sono leso io o le funzioni di aggregazione nel where non ci vanno? :confused:

yorkeiser
14-05-2007, 15:44
ma sono leso io o le funzioni di aggregazione nel where non ci vanno? :confused:

Hai perfettamente ragione, lapsus mio. Si risolve in vari modi, ad esempio aggiungendo un'altra select nella where (where qta = select max(qta)...() o utilizzando il raggruppamento