CORSO TECNICO DI RETI | Blog di supporto al corso Cescot per ... - Esempi SQL con Access ·...

17
Esempi SQL con Access Orazio Battaglia

Transcript of CORSO TECNICO DI RETI | Blog di supporto al corso Cescot per ... - Esempi SQL con Access ·...

Page 1: CORSO TECNICO DI RETI | Blog di supporto al corso Cescot per ... - Esempi SQL con Access · 2012-04-24 · Consideriamo la base di dati in figura. 2 Tecnico di Reti Informatiche,

Esempi SQL con Access

Orazio Battaglia

Page 2: CORSO TECNICO DI RETI | Blog di supporto al corso Cescot per ... - Esempi SQL con Access · 2012-04-24 · Consideriamo la base di dati in figura. 2 Tecnico di Reti Informatiche,

Esempi SQL

Consideriamo la base di dati in figura.

2 Tecnico di Reti Informatiche, modulo 2

Page 3: CORSO TECNICO DI RETI | Blog di supporto al corso Cescot per ... - Esempi SQL con Access · 2012-04-24 · Consideriamo la base di dati in figura. 2 Tecnico di Reti Informatiche,

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

Page 4: CORSO TECNICO DI RETI | Blog di supporto al corso Cescot per ... - Esempi SQL con Access · 2012-04-24 · Consideriamo la base di dati in figura. 2 Tecnico di Reti Informatiche,

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

Page 5: CORSO TECNICO DI RETI | Blog di supporto al corso Cescot per ... - Esempi SQL con Access · 2012-04-24 · Consideriamo la base di dati in figura. 2 Tecnico di Reti Informatiche,

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

Page 6: CORSO TECNICO DI RETI | Blog di supporto al corso Cescot per ... - Esempi SQL con Access · 2012-04-24 · Consideriamo la base di dati in figura. 2 Tecnico di Reti Informatiche,

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

Page 7: CORSO TECNICO DI RETI | Blog di supporto al corso Cescot per ... - Esempi SQL con Access · 2012-04-24 · Consideriamo la base di dati in figura. 2 Tecnico di Reti Informatiche,

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

Page 8: CORSO TECNICO DI RETI | Blog di supporto al corso Cescot per ... - Esempi SQL con Access · 2012-04-24 · Consideriamo la base di dati in figura. 2 Tecnico di Reti Informatiche,

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

Page 9: CORSO TECNICO DI RETI | Blog di supporto al corso Cescot per ... - Esempi SQL con Access · 2012-04-24 · Consideriamo la base di dati in figura. 2 Tecnico di Reti Informatiche,

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

Page 10: CORSO TECNICO DI RETI | Blog di supporto al corso Cescot per ... - Esempi SQL con Access · 2012-04-24 · Consideriamo la base di dati in figura. 2 Tecnico di Reti Informatiche,

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

Page 11: CORSO TECNICO DI RETI | Blog di supporto al corso Cescot per ... - Esempi SQL con Access · 2012-04-24 · Consideriamo la base di dati in figura. 2 Tecnico di Reti Informatiche,

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

Page 12: CORSO TECNICO DI RETI | Blog di supporto al corso Cescot per ... - Esempi SQL con Access · 2012-04-24 · Consideriamo la base di dati in figura. 2 Tecnico di Reti Informatiche,

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

Page 13: CORSO TECNICO DI RETI | Blog di supporto al corso Cescot per ... - Esempi SQL con Access · 2012-04-24 · Consideriamo la base di dati in figura. 2 Tecnico di Reti Informatiche,

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

Page 14: CORSO TECNICO DI RETI | Blog di supporto al corso Cescot per ... - Esempi SQL con Access · 2012-04-24 · Consideriamo la base di dati in figura. 2 Tecnico di Reti Informatiche,

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

Page 15: CORSO TECNICO DI RETI | Blog di supporto al corso Cescot per ... - Esempi SQL con Access · 2012-04-24 · Consideriamo la base di dati in figura. 2 Tecnico di Reti Informatiche,

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

Page 16: CORSO TECNICO DI RETI | Blog di supporto al corso Cescot per ... - Esempi SQL con Access · 2012-04-24 · Consideriamo la base di dati in figura. 2 Tecnico di Reti Informatiche,

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

Page 17: CORSO TECNICO DI RETI | Blog di supporto al corso Cescot per ... - Esempi SQL con Access · 2012-04-24 · Consideriamo la base di dati in figura. 2 Tecnico di Reti Informatiche,

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