Post on 09-Jan-2020
Esempi SQL con Access
Orazio Battaglia
Esempi SQL
Consideriamo la base di dati in figura.
2 Tecnico di Reti Informatiche, modulo 2
Esempi SQL
Interrogazione 1: Selezioniamo tutti gli impiegati,
vogliamo Cognome, Nome e Posizione
3
SELECT Impiegati.Cognome,
Impiegati.Nome, Impiegati.Posizione
FROM Impiegati;
Tecnico di Reti Informatiche, modulo 2
Esempi SQL
Interrogazione 2: Selezioniamo tutti gli impiegati
Rappresentante. Vogliamo Cognome, Nome e Posizione
4
SELECT Impiegati.Cognome,
Impiegati.Nome, Impiegati.Posizione
FROM Impiegati
WHERE
(((Impiegati.Posizione)="Rappresentante"));
Tecnico di Reti Informatiche, modulo 2
Esempi SQL
Interrogazione 3: Selezioniamo gli ordini e per ciascun
ordine i prodotti inclusi. Join.
5
SELECT Ordini.IDOrdine, [Dettagli ordini].IDProdotto,
[Dettagli ordini].PrezzoUnitario, [Dettagli ordini].Quantità,
[Dettagli ordini].Sconto
FROM Ordini INNER JOIN [Dettagli ordini] ON
Ordini.IDOrdine = [Dettagli ordini].IDOrdine;
Tecnico di Reti Informatiche, modulo 2
Esempi SQL
Interrogazione 4: Selezioniamo gli ordini e per ciascun
ordine i prodotti inclusi. Join. Vogliamo solo l’ordine 10248.
6
SELECT Ordini.IDOrdine, [Dettagli ordini].IDProdotto, [Dettagli
ordini].PrezzoUnitario, [Dettagli ordini].Quantità, [Dettagli ordini].Sconto
FROM Ordini INNER JOIN [Dettagli ordini] ON Ordini.IDOrdine = [Dettagli
ordini].IDOrdine
WHERE (((Ordini.IDOrdine)=10248)); Tecnico di Reti Informatiche, modulo 2
Esempi SQL
Interrogazione 5: Selezioniamo gli ordini e per ciascun ordine i prodotti inclusi, aggiungiamo il nome del prodotto. Doppio Join.
7
SELECT Ordini.IDOrdine, [Dettagli ordini].IDProdotto, Prodotti.NomeProdotto, [Dettagli
ordini].PrezzoUnitario, [Dettagli ordini].Quantità, [Dettagli ordini].Sconto
FROM Prodotti INNER JOIN (Ordini INNER JOIN [Dettagli ordini] ON Ordini.IDOrdine =
[Dettagli ordini].IDOrdine) ON Prodotti.IDProdotto = [Dettagli ordini].IDProdotto;
Tecnico di Reti Informatiche, modulo 2
Esempi SQL Outer Join. In Access per modificare il tipo di join selezionare le proprietà del join.
Di default viene proposto l’inner join (opzione 1).
E possibile poi selezionare tra:
right [outer] join, l’opzione 2
left [outer] join, l’opzione 3
8 Tecnico di Reti Informatiche, modulo 2
Esempi SQL
Interrogazione 6: Outer Join. Esempio left [outer] join.
Aggiungo un nuovo impiegato che non ha fatto ordini.
9
SELECT Ordini.IDOrdine, Impiegati.IDImpiegato, Impiegati.Cognome,
Impiegati.Nome
FROM Impiegati LEFT JOIN Ordini ON Impiegati.IDImpiegato =
Ordini.IDImpiegato;
Tecnico di Reti Informatiche, modulo 2
Esempi SQL Interrogazione 7: Ordinamento. Tutti gli impiegati ordinati per data di nascita.
10
SELECT Impiegati.Cognome, Impiegati.Nome, Impiegati.Posizione,
Impiegati.DataNascita
FROM Impiegati
ORDER BY Impiegati.DataNascita;
Tecnico di Reti Informatiche, modulo 2
Esempi SQL Interrogazione 8: Ordinamento. Tutti gli impiegati rappresentanti ordinati per data di nascita. Notare l’ORDER BY dopo il WHERE.
11
SELECT Impiegati.Cognome, Impiegati.Nome, Impiegati.Posizione,
Impiegati.DataNascita
FROM Impiegati
WHERE (((Impiegati.Posizione)="Rappresentante"))
ORDER BY Impiegati.DataNascita;
Tecnico di Reti Informatiche, modulo 2
Esempi SQL
Interrogazione 9: Operatori aggregati. Conteggio di prodotti.
12
SELECT Count(Prodotti.IDProdotto) AS
ConteggioDiIDProdotto
FROM Prodotti;
SELECT Count(*) AS
ConteggioDiIDProdotto
FROM Prodotti;
Tecnico di Reti Informatiche, modulo 2
Esempi SQL Interrogazione 10: Operatori aggregati. Somma, massimo, minimo e media dei prezzi dei prodotti.
13
SELECT Sum | Max | Min | Avg (Prodotti.PrezzoUnitario) AS
SommaDiPrezzoUnitario
FROM Prodotti; Tecnico di Reti Informatiche, modulo 2
Esempi SQL Interrogazione 11: Raggruppamento. Raggruppiamo i prodotti per categoria e calcoliamo la media dei prezzi della categoria.
14
SELECT Prodotti.IDCategoria,
Avg(Prodotti.PrezzoUnitario) AS
MediaDiPrezzoUnitario
FROM Prodotti
GROUP BY Prodotti.IDCategoria;
Tecnico di Reti Informatiche, modulo 2
Esempi SQL Interrogazione 12: Raggruppamento. Raggruppiamo i prodotti per categoria e calcoliamo la media dei prezzi della categoria. Aggiungiamo il nome della categoria.
15
SELECT Prodotti.IDCategoria, Categorie.NomeCategoria,
Avg(Prodotti.PrezzoUnitario) AS MediaDiPrezzoUnitario
FROM Categorie INNER JOIN Prodotti ON Categorie.IDCategoria =
Prodotti.IDCategoria
GROUP BY Prodotti.IDCategoria, Categorie.NomeCategoria;
Tecnico di Reti Informatiche, modulo 2
Esempi SQL Interrogazione 13: Raggruppamento. Raggruppiamo i prodotti per categoria e calcoliamo la media dei prezzi della categoria. Aggiungiamo il nome della categoria. Vogliamo solo le categorie con media di prezzo superiore a 40.000.
16
SELECT Prodotti.IDCategoria, Categorie.NomeCategoria, Avg(Prodotti.PrezzoUnitario)
AS MediaDiPrezzoUnitario
FROM Categorie INNER JOIN Prodotti ON Categorie.IDCategoria = Prodotti.IDCategoria
GROUP BY Prodotti.IDCategoria, Categorie.NomeCategoria
HAVING (((Avg(Prodotti.PrezzoUnitario))>40000));
Tecnico di Reti Informatiche, modulo 2
Esempi SQL Interrogazione 14: Raggruppamento. Raggruppiamo i prodotti per categoria e calcoliamo la media dei prezzi della categoria. Aggiungiamo il nome della categoria. Vogliamo solo le categorie con media di prezzo superiore a 40.000 e ordiniamo per media.
17
SELECT Prodotti.IDCategoria, Categorie.NomeCategoria, Avg(Prodotti.PrezzoUnitario) AS
MediaDiPrezzoUnitario
FROM Categorie INNER JOIN Prodotti ON Categorie.IDCategoria = Prodotti.IDCategoria
GROUP BY Prodotti.IDCategoria, Categorie.NomeCategoria
HAVING (((Avg(Prodotti.PrezzoUnitario))>40000))
ORDER BY Avg(Prodotti.PrezzoUnitario);
Tecnico di Reti Informatiche, modulo 2