PDA

View Full Version : [urgente] SQL interrogazione


giannimesa
08-01-2007, 18:27
ciao ragazzi urgerebbe un aiutino per un interrogazione in SQL...

lo schema è questo
ATLETI (CodFisc , Nome, Nazione, DataNas)
GARE (CodGara,Specialità,Disciplina, Data, Sede)
PARTECIPA (Atleta,Gara,PosizArrivo)

e l'interrogazione è Nome, Nazione, data di nascita degli atleti che hanno vinto (PosizArrivo=1) più di 3 gare nella disciplina "atletica leggera" specialità "salto in alto"...

UFFA non rieco a capire come fare!!!

GRAZIE!!

P.S.
per errore ho postato anche sul forum di discussioni scolastiche...prego i mod di cancellare il post che in effetti ho aperto in una sezione più adatta ;)

thehuge
08-01-2007, 18:50
Questo dovrebbe funzionare:


SELECT DISTINCT ATLETA.Nome AS Nome, ATLETA.Nazione AS Nazione, ATLETA.DataNas AS DataNascita, count(*) AS NumVittorie
FROM ATLETI, GARE, PARTECIPA
WHERE ATLETI.CodFisc=PARTECIPA.Atleta
AND GARE.CodGara=PARTECIPA.Gara
AND PARTECIPA.PosizArrivo=1
GROUP BY ATLETA.Nome, ATLETA.Nazione, ATLETA.DataNas, GARE.CodGara
HAVING count(*) > 3;


Ti restituisce anche il numero di gare vinte, ma se non ti serve basta che non lo prendi in considerazione.

Se proprio ti da fastidio ti conviene creare una vista (con il codice qui sopra) e fare un select a quella con:


SELECT Nome, Nazione, DataNascita FROM <nome_vista>;

giannimesa
08-01-2007, 19:10
grazie grazie mille!!!!

sto preparando sto cavolo di esame... di BAsi di DAti..ma le interrogazioni SQL non le mando giù... io pensavo a una query annidata... non ha senso o si??

thehuge
08-01-2007, 19:17
grazie grazie mille!!!!
lieto di essere utile ;)
sto preparando sto cavolo di esame... di BAsi di DAti..ma le interrogazioni SQL non le mando giù... io pensavo a una query annidata... non ha senso o si??
Ha senso, ma attento: non sono supportate da tutti i DBMS

0rph3n
08-01-2007, 20:46
Ha senso, ma attento: non sono supportate da tutti i DBMS
inoltre abbassano di molto le prestazioni!
proprio l'altro giorno semplicemente sostituendo una clausola nel where che richiedeva l'esecuzione di una query annidata con una join ho visto il tempo di esecuzione della suddetta query passare da circa 8 a 0,0026 secondi!
poi ho passato un bel po' di tempo a chiedermi chi potesse essere stato il pazzo a scrivere quella query in quel modo :D

'iao