ESERCITAZIONE 4
Comandi SQL a più tabelle ed importazioni
ESERCIZIO 1 - IV-M2.4A.1 |
- Importare il vocabolario (file TAB-TEXT) nel file di access VOCABOLARIO.MDB.
a) Costruire il comando SQL che richiede un vocabolo in italiano e restituisce la sua traduzione in inglese e francese
- Costruire i comandi SQL che restituiscano queste statistiche relative al solo vocabolario Italiano:
b) Numero totale di caratteri presenti nel
vocabolario italiano
c) Numero totale di caratteri, escludendo gli spazi iniziali
e finali, presenti
nel vocabolario italiano
c1) Numero totale di caratteri, escludendo tutti gli spazi
(anche quelli in mezzo), presenti
nel vocabolario italiano
d) Elenco delle lettere iniziali con a fianco il
numero di parole del vocabolario italiano che iniziano per quel carattere
e) Elenco delle lettere finali con a fianco il numero di parole del
vocabolario italiano che finiscono per quel carattere
f) Numero di parole che iniziano e terminano con la stessa lettera. Non è
necessario visualizzare le lettere che non soddisfano questa proprietà nel
vocabolario italiano.
g) Numero di parole raggruppate per numero di
caratteri. Le parole oltre i 25 caratteri devono essere considerate in un'unica
voce ">25"
h) Costruire il
comando SQL che restituisce quante volte il carattere "a" si presenta nel
vocabolario italiano (utilizzare la funzione VBA Replace se uso office2000 o
superiore)
2° Parte (soluzione a più tabelle)
Per risolvere i seguenti esercizi è necessario usare la tabella di supporto ALFABETO contenente tutte le 26 lettere.
{
suggerimento:
- creare la tabella Alfabeto
con il comando SQL:
Create table
Alfabeto (Lettera TEXT(1))
- popolare la tabella Alfabeto con il seguente
comando SQL di accodamento:
INSERT INTO Alfabeto
( Lettera )
SELECT UCase(Left([Italiana],1)) AS Lettera
FROM Vocabolario
WHERE (((Asc(UCase(Left([Italiana],1))))<=Asc("Z")
And (Asc(UCase(Left([Italiana],1))))>=Asc("A")))
GROUP BY UCase(Left([Italiana],1));
oppure, per creare e popolare la tabella
Alfabeto, utilizzare la query di creazione per accodamento seguente:
SELECT UCase(Left([Italiana],1))
AS Lettera INTO Alfabeto
FROM Vocabolario
WHERE (((Asc(UCase(Left([Italiana],1))))<=Asc("Z")
And (Asc(UCase(Left([Italiana],1))))>=Asc("A")))
GROUP BY UCase(Left([Italiana],1));
}
f1)
Costruire il comando SQL che visualizza il numero di parole che iniziano e terminano con la stessa lettera
(devono essere visibili tutte le lettere dell'alfabeto!).
h1) Costruire il comando SQL che restituisce, per
ogni lettera dell'alfabeto, quante volte ogni carattere si è presentato nel
vocabolario italiano
i) Costruire il comando SQL che restituisce, per
ogni lettera dell'alfabeto, il numeri di parole del vocabolario italiano che la
contengono
l) Costruire il comando SQL che
restituisce il numero di parole che contengono 1 occorrenza, 2 occorrenze, ...
n-occorrenze di una determinata lettera e questo per ogni lettera
P.S.: Le statistiche richieste riguardano il vocabolario in italiano. Salvare le
query prodotte come nella figura sottostante
ESERCIZIO 2 - IV-M2.4A.2 |
Si consideri il seguente database utilizzato per registrare tutte le formazioni delle squadre di calcio italiane e le marcature realizzate partire dall'anno 1898.
COSTRUIRE I COMANDI SQL CHE FORNISCONO QUESTI RISULTATI:
a) Formazione del Brescia del 3 novembre
1998
b) Visualizzare i cognomi dei più grandi goleador in ordine decrescente
(escludi gli autogoal)
c) Massimo numero di giorni di presenza nella stessa squadra
d) Elenco delle squadre dove ha militato "Roberto Baggio"
e) Elenco delle squadre iscritte al campionato di
serie A nell'anno 1978-1979 con sede legale a Milano
f) Elenco contenente il numero di squadre iscritte al campionato di serie B
suddiviso per anno di campionato
g) Elenco delle squadre non iscritte ad alcun campionato nel 1999-2000
h) Elenco di tutti i giocatori di serie B
che hanno giocato almeno un giorno nel 2001-2002
i) Giocatori del Milan che
il cui cognome inizia per C che hanno giocato nel campionato del 2001-2002 e che
abbiano fatto almeno un autogoal
l) Elenco dei giocatori che non hanno mai giocato nel Brescia.
ESERCIZIO 3 - IV-M2.4A.3 |
Sempre riferendosi al DB dell'esercizio 2 illustrare il risultato dell'esecuzione di questi comandi SQL
1)
SELECT NOMESQUADRA, SERIE
FROM IscrizioniCampionato
ORDER BY ANNOCAMPIONATO;
2)
SELECT [Cognome] & " " & [Nome] AS Nominativo,
DallaData, AllaData
FROM Formazioni, Calciatori
WHERE (NomeSquadra='BRESCIA') AND
(Calciatori.IdCalciatore=Formazioni.IdCalciatore)
ORDER BY Formazioni.DallaData;
3)
SELECT Calciatori.Cognome, Calciatori.Nome, Count(*)
AS NrGoal
FROM Formazioni, Calciatori, Marcature
WHERE (Marcature.idFormazione=Formazioni.IdFormazione) AND
(Formazioni.IdCalciatore=Calciatori.IdCalciatore)
GROUP BY Calciatori.Cognome, Calciatori.Nome;
4)
SELECT Calciatori.Cognome & ' ' &
Calciatori.Nome AS NomeCalciatore,
Formazioni.Ruolo FROM Calciatori, Formazioni
WHERE (Calciatori.Cognome='Baggio') AND (Calciatori.Nome='Roberto')
AND (Calciatori.idCalciatore = Formazioni.idCalciatore)
5)
SELECT Calciatori.Cognome FROM Calciatori
WHERE IdCalciatore NOT IN (SELECT idCalciatore FROM Formazioni
WHERE (Formazioni.NomeSquadra="MILAN"));
6) SELECT Calciatori.Cognome, Calciatori.Nome
FROM (Calciatori LEFT JOIN Formazioni
ON Calciatori.idCalciatore = Formazioni.idCalciatore) LEFT JOIN Marcature ON
Formazioni.idFormazione = Marcature.idFormazione
WHERE (Formazioni.Ruolo='Portiere') AND NOT (Marcature.idFormazione Is
Null)
GROUP BY Calciatori.Cognome, Calciatori.Nome;
7)
SELECT Calciatori.Cognome, Calciatori.Nome,
Count(*) AS NrAutogol
FROM (Calciatori LEFT JOIN Formazioni
ON Calciatori.idCalciatore=Formazioni.idCalciatore)
LEFT JOIN Marcature ON Formazioni.idFormazione = Marcature.idFormazione
WHERE (Marcature.Autogol=True)
GROUP BY Calciatori.Cognome, Calciatori.Nome;
8)
SELECT Formazioni.NomeSquadra, Sum(IIf(IsNull(Marcature.idFormazione),0,1))
AS NrGoal
FROM Formazioni LEFT JOIN Marcature ON Formazioni.idFormazione =
Marcature.idFormazione
GROUP BY Formazioni.NomeSquadra;
9)
SELECT Formazioni.NomeSquadra, Count(*) AS
NrGoal
FROM Formazioni RIGHT JOIN Marcature ON Formazioni.idFormazione =
Marcature.idFormazione
GROUP BY Formazioni.NomeSquadra;