Torna alla pagina di Basi di Dati
:: Basi di Dati: temi d'Esame
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<=10
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 Partecipazione
WHERE PosizioneClassifica=1
GROUP 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)