Uni.TemaEsame23012007 History
Hide minor edits - Show changes to markup
CAVALLO(Nome, Razza, DataNascita, Colore, NomeMadre, NomePadre)
FANTINO(CF, Nome, Cognome, DataNascita)
PARTECIPAZIONEGARA(NomeGara, NomeCavallo, CFFantino, PosizioneClassifica)
CAVALLO(Nome, Razza, DataNascita, Colore, NomeMadre, NomePadre)
FANTINO(CF, Nome, Cognome, DataNascita)
PARTECIPAZIONEGARA(NomeGara, NomeCavallo, CFFantino, PosizioneClassifica)
(:Title Basi di Dati temi d'esame:)
Torna alla pagina di Basi di Dati
23 gennaio 2007
CAVALLO(Nome, Razza, DataNascita, Colore, NomeMadre, NomePadre)
FANTINO(CF, Nome, Cognome, DataNascita)
PARTECIPAZIONEGARA(NomeGara, NomeCavallo, CFFantino, PosizioneClassifica)
SQL
Determinnare io nome delle gare nelle quali unb cavallo di colore bianco si è classificato tra i primi 10
SELECT NomeGara
FROM Cavallo JOIN Partecipa ON Nome = NomeCavallo
WHERE Colore='Bianco' AND
PosizioneClassifica=1
Determinare il CF del fantino che ha vinto il maggior nimero di gare
SELECT DISTINCT CFFantino
FROM Partecipazione
WHEREPosizioneClassifica=1
GROUP BYCFFantino
HAVING COUNT(*) >= ALL
- SELECT COUNT(PosizioneClassifica)FROM PartecipazioneWHERE PosizioneClassifica=1GROUP BY CFFantino
ALGEBRA
Determinare le coppie NomeCavallo-CFFantino che non hanno mai vinto una gara
Proiietto tutte le coppie
TUTTI:=πNomeCavallo, CFFantino (PARTECIPAZIONE)
Ora seleziono i vincitori
V:=πNomeCavallo, CFFantino(σPosiozioneClassifica=1 PARTECIPAZIONE)
Ora tutti- quelli che hanno vinto
RIS:=TUTTI - V
Determinare il nome dei fantini che hanno vinto almeno 2 gare
proietto nome cavallo cF del fantino e nome gara delle gare vincenti
P1:=πNomeCavallo, CFFantino, NomeGara(σPosizioneClassifica=1PARTECIPAZIONE)
ne faccio una copia
P2:=ρNC, CFF,NG<- NomeCavallo, CFFantino, NomeGara(P1)
Join tra P1 e P2 per trovare il fantino e il cavallo che hanno vinto almeno 2 gare
R:=πCFF(P1 |X|NC=NomeCavallo ^ CFF=CFFantino ^ NG<>NomeGaraP2)
Join con fantino per ottenere il nome
RIS:=πNome(R |X| CF=CFFFANTINO)