con Access Orazio Battaglia
Consideriamo la base di dati in figura. 2
Interrogazione 1: Selezioniamo tutti gli impiegati, vogliamo Cognome, Nome e Posizione SELECT Impiegati.Cognome, Impiegati.Nome, Impiegati.Posizione FROM Impiegati; 3
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"));
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;
Interrogazione 4: Selezioniamo gli ordini e per ciascun ordine i prodotti inclusi. Join. Vogliamo solo l ordine 10248. 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)); 6
Interrogazione 5: Selezioniamo gli ordini e per ciascun ordine i prodotti inclusi, aggiungiamo il nome del prodotto. Doppio Join. 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; 7
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
Interrogazione 6: Outer Join. Esempio left [outer] join. Aggiungo un nuovo impiegato che non ha fatto ordini. SELECT Ordini.IDOrdine, Impiegati.IDImpiegato, Impiegati.Cognome, Impiegati.Nome FROM Impiegati LEFT JOIN Ordini ON Impiegati.IDImpiegato = Ordini.IDImpiegato; 9
Interrogazione 7: Ordinamento. Tutti gli impiegati ordinati per data di nascita. SELECT Impiegati.Cognome, Impiegati.Nome, Impiegati.Posizione, Impiegati.DataNascita FROM Impiegati ORDER BY Impiegati.DataNascita; 10
Interrogazione 8: Ordinamento. Tutti gli impiegati rappresentanti ordinati per data di nascita. Notare l ORDER BY dopo il WHERE. SELECT Impiegati.Cognome, Impiegati.Nome, Impiegati.Posizione, Impiegati.DataNascita FROM Impiegati WHERE (((Impiegati.Posizione)="Rappresentante")) ORDER BY Impiegati.DataNascita; 11
Interrogazione 9: Operatori aggregati. Conteggio di prodotti. SELECT Count(Prodotti.IDProdotto) AS ConteggioDiIDProdotto FROM Prodotti; SELECT Count(*) AS ConteggioDiIDProdotto FROM Prodotti; 12
Interrogazione 10: Operatori aggregati. Somma, massimo, minimo e media dei prezzi dei prodotti. SELECT Sum Max Min Avg (Prodotti.PrezzoUnitario) AS SommaDiPrezzoUnitario FROM Prodotti; 13
Interrogazione 11: Raggruppamento. Raggruppiamo i prodotti per categoria e calcoliamo la media dei prezzi della categoria. SELECT Prodotti.IDCategoria, Avg(Prodotti.PrezzoUnitario) AS MediaDiPrezzoUnitario FROM Prodotti GROUP BY Prodotti.IDCategoria; 14
Interrogazione 12: Raggruppamento. Raggruppiamo i prodotti per categoria e calcoliamo la media dei prezzi della categoria. Aggiungiamo il nome della categoria. 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; 15
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. 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)); 16
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. 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); 17