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!!!] Query SQL
Clicca QUI per vedere il messaggio nel forum
Simone_155
Aiuto, ho una query SQL che non ho idea di come trattare!Qualcuno mi saprebbe spiegare come si fa??è quella del tema di Gennaio 2006.

Eccol la base di dati:
VENDITA (CodVend,CodCli,CodProd,Qta)
VENDITORE (Codice,Nome,Città)
CLIENTE (CodiceCli,NomeCli,CittàCli)

La query è la seguente:
Determinare il venditore di Verona che ha venduto la maggior quantità complessiva di prodotti nella base di dati.

Io l'ho fatta così, ma non credo sia giusta...

SELECT V.Nome,V.Codice,max(maxVend.totVend)
FROM (VENDITORE AS V INNER JOIN (SELECT SUM(Qta) AS totVend FROM VENDITA GROUP BY CodVend) AS maxVend ON V.Codice = maxVend.CodVend) WHERE Città = 'Verona'

Help please...perchè nei compiti di basi di query simili ce ne sono un sacco, e io non so proprio come risolverle!!!!

HEEEEEELLLLPPPPP

seba01
Ciao, questa query dovrebbe funzionare, non so se è la migliore possibile...

In pratica la prima parte si occupa di selezionare i record dei venditori di verona con le quantità totali di prodotti venduti,
mentre la seconda mi fornisce la massima quantità dei prodotti venduti da un venditore.
Mettendo in join le due ottieni quanto richiesto.

select codVend from (select codVend,sum(Qta) as QtaTot from VENDITA,Venditore
where codVend = Codice and Venditore.Citta = 'Verona'
group by codVend)as ListaVend,

(select max(qtatot)as mass from(select sum(Qta) as QtaTot from VENDITA,Venditore
where codVend = Codice and Venditore.Citta = 'Verona'
group by codVend) as res) as Massimo
where Massimo.mass = ListaVend.qtatot

Simone_155
Mamma mia, tripla JOIN??
Mah, magari è giusta, però penso che si possa fare in maniera innestata...ma non riesco a trovare il modo di farla...ma quanto c***o è difficile???

seba01
bhe cosi' è innestata, ma credo cambi poco in termini di elaborazione rispetto a quella col join....


select codVend from (select codVend,sum(Qta) as QtaTot from VENDITA,Venditore
where codVend = Codice and Venditore.Citta = 'Verona'
group by codVend) ListaVend

where QtaTot =

(select max(qtatot)as mass from(select sum(Qta) as QtaTot from VENDITA,Venditore
where codVend = Codice and Venditore.Citta = 'Verona'
group by codVend) res)

Simone_155
Allora, dopo averla rifatta per l'ennesima volta assieme ad un mio compagno (bella Ivan!!!!!), è saltata fuori sta cosa che mi piace anche abbastanza:

SELECT CodVend,Nome
FROM VENDITA JOIN VENDITORE ON codVend = Codice
WHERE Città = 'Verona'
GROUP BY CodVend,Nome
HAVING SUM(Qta) >= ALL (SELECT SUM(Qta)
FROM VENDITA
GROUP BY CodVend)

Dovrebbe andare no?

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