ACCESS Esercitazione (query complesse) Ing. Cosimo Orlacchio

Похожие документы
Linguaggio SQL seconda parte

Il linguaggio SQL: raggruppamenti. Versione elettronica: SQLb-gruppi.pdf

<Nome Tabella>.<attributo>

Esempi SQL con Access. Orazio Battaglia

SQL [2] Concetti avanzati di SQL. Esempi di interrogazioni

Microsoft Access (parte 5) Query. Query. Query. Query. Creare una query

Interrogare una base di dati: algebra relazionale e SQL. Savino Castagnozzi Giorgio Macauda Michele Meomartino Salvatore Picerno Massimiliano Sartor

DATABASE CLIENTIRAPPRESENTANTI

SQL - Funzioni di gruppo

Structured. Language. Basi di Dati. Introduzione. DDL: Data Definition Language. Tipi di dato. Query. Modifica dei Dati

Linguaggio SQL. studenti matricola nome cognome citta anno 11 marco bini bologna laura sicuro rimini 1984 esami codice

Informatica. Sintassi. Interrogazioni in SQL. Significato dell interrogazione. Tabella Impiegato. Basi di dati parte 4 SQL

CORSO ACCESS 2000 PARTE VI

Eprogram ITIS V anno Unità 4 - Il linguaggio SQL

SQL e algebra relazionale

SQL quick reference. piccolo manuale di riferimento dei principali comandi SQL (prof. Claudio Maccherani, Perugia, 2013)

Tipi di sottoquery SQL

Query in Access. Criteri, Valori Univoci, Operatori e Colonna Calcolata. Query (Interrogazione)

ESEMPI DI QUERY SQL. Esempi di Query SQL Michele Batocchi AS 2012/2013 Pagina 1 di 7

ESERCIZI SQL. Esercizio 1

Data Management Software. Il linguaggio SQL. Raggruppamenti. Paolo Avallone Sr Consulting IT Specialist DB2, Data Management Marzo 2004

SQL - Sottointerrogazioni

Le query di comando e di servizio in Access

Basi di Dati. Esercitazione 2: Interrogazioni in SQL. K. Donno - Interrogazioni in SQL

Esercitazione su SQL

DISPENSA ACCESS (OFFICE 2010 BETA)

Basi di Dati. Esercitazione SQL. Paolo Papotti. 19 maggio 2005

Basi di Dati: Corso di laboratorio

Interrogare una base di dati: Algebra relazionale e SQL. Alessandro Bardine Alessandro Ciaramella Vincenzo Galella Rudy Manganelli

Basi di Dati. S Q L Lezione 4

SELECT s.nome, e.data Studenti s, Esami e WHERE e.materia = 'BD' AND e.voto = 30 AND e.matricola = s.matricola

Interrogazioni nidificate

Il sistema informativo deve essere di tipo centralizzato e accessibile mediante un computer server installato nella rete locale dell albergo.

Caratteristiche dei linguaggi per Database

SELECT FROM ORDER BY SELECT FROM ORDER BY DESC DESC SELECT FROM ORDER BY DESC DESC SELECT FROM WHERE SELECT FROM WHERE AND SELECT FROM WHERE AND

Microsoft Access. Microsoft Access. Maurizio Rebaudengo, Paolo Garza 1. Microsoft Access. Creazione base di dati. Apertura di una base dati

BASI DATI: Open Office BASE INFORMATICA

SQL Laboratorio di Basi di Dati a.a. 2002/2003

Ripasso Concetti Pratica in Access Link utili. ECDL - Database. European Computer Driving Licence - Modulo 5 - Database LEZIONE 3

Interrogazioni nidificate

Microsoft Access. Obiettivo della lezione. Useremo Access per interrogare una base di dati (query)

INFORMATICA. Applicazioni WEB a tre livelli con approfondimento della loro manutenzione e memorizzazione dati e del DATABASE.

Query. Query (Interrogazioni) SQL SQL. Significato dell interrogazione. Sintassi

Basi di Dati. Esercitazione 3: Interrogazioni in SQL. K. Donno - Interrogazioni in SQL

Ordinare dati. Microsoft Access. Ordinare dati. Ordinare dati. Ordinare dati. Ordinare dati. Query (II), filtri. L ordinamento crescente:

Basi di dati I 27 gennaio 2016 Esame Compito A Tempo a disposizione: un ora e quarantacinque minuti. Libri chiusi.

ESERCITAZIONE 4 Giovedì 13 novembre 2014 (3 ore) SQL

Basi di dati I 19 settembre 2016 Tempo a disposizione: un ora e 45 minuti.

Il linguaggio SQL: query innestate

Domande utili alla preparazione dell orale di Informatica all Esame di Stato

Basi di dati I Prova di autovalutazione 30 ottobre 2014

TUTORIAL IMPORTAZIONE DATI DA FOGLIO EXCELL WINKHOUSE

Oracle Database 10g: Introduction to SQL - LVC

Utilizzando Microsoft Access. Si crea la tabella Anagrafica degli alunni,le Materie e i voti si mettono alcuni campi

SISTEMI OPERATIVI, RETI, INTERNET

Lezione 6. Algebra e Calcolo Relazionale

Abilità Informatiche A.A. 2010/2011 Lezione 9: Query Maschere Report. Facoltà di Lingue e Letterature Straniere

SQL Avanzato. Interrogazioni e il valore NULL. Interrogazioni complesse, trigger, viste e modifiche dello schema. Giorgio Giacinto 2015

INFORMATICA PER L IMPRESA (Docente Prof. Alfredo Garro) ESERCIZIO 3

Basi di Dati Corso di Laura in Informatica Umanistica

Data warehouse in Oracle

Il linguaggio SQL e Access

ELENCHI DEL PERSONALE

Le interrogazioni annidate

Relazioni e tabelle. Introduzione alle Basi di Dati Relazionali. Relazioni uno a uno. Esempio

Concettuale. Giuseppe Amato

Il linguaggio SQL. ing. Alfredo Cozzi 1

Il linguaggio SQL: viste e tabelle derivate. DB di riferimento per gli esempi

L istruzione SELECT di SQL

Istruzioni DML di SQL

Basi di Dati: Corso di laboratorio

Viste materializzate in Oracle e SQL esteso. Sistemi di gestione di basi di dati. Tania Cerquitelli e Paolo Garza 1.

Inserire record. Microsoft Access. Inserire/modificare record. Inserire record. Cancellare record. Inserire/modificare record

Access 2007 Colonna di ricerca

Sommario. Introduzione... 13

Istruzioni per la creazione e compilazione dei registri delle lezioni

Errore. Il segnalibro non è definito.

Uso delle variabili di alias. SQL slide aggiuntive. Interrogazione 25. Interrogazione 26

Elena Baralis 2007 Politecnico di Torino 1

Progetto NoiPA per la gestione giuridicoeconomica del personale delle Aziende e degli Enti del Servizio Sanitario della Regione Lazio

Транскрипт:

ACCESS Esercitazione (query complesse) Ing. Cosimo Orlacchio

Le query su più tabelle Le query proposte nella Lezione scorsa sono tutte basate su una sola tabella. Una base di dati è solitamente costituita da più tabelle tra le quali deve essere possibile correlare informazioni afferenti ad una stessa entità ma disposte su tabelle diverse 2

Le query su più tabelle La correlazione consiste nel congiungere (join) un campo di una tabella con un omologo campo di un altra tabella, che, anche se definiti con nomi diversi, conterranno un identico valore. Questa identicità di valore consentirà di correlare le informazioni appartenenti alla stessa entità 3

4

Le query su più tabelle Sulle due tabelle ISTITUTI e DOCENTI create, e correlate, sviluppare l interrogazione: Quali sono i docenti della scuola Plinio? 5

Le query su più tabelle Come agisce l interrogazione precedentemente proposta: Individua nella tabella ISTITUTI quale è il record avente valore PLINIO nel campo Nome_scuola Individuato il record conosce anche il valore del campo Codice_scuola della scuola PLINIO Tale valore viene usato per rintracciare e visualizzare tutti i record della tabella DOCENTI che hanno il campo Codice_scuola caricato con identico valore 6

Le query su più tabelle Un altra possibile interrogazione potrebbe essere: A quale scuola afferisce il docente Pinco Pallino? 7 Individua nella tabella DOCENTI quale è il record avente valore Pinco Pallino nel campo Nome_docente Individuato il record si conosce anche il valore del campo Codice_scuola docente Pinco Pallino Tale valore viene usato per rintracciare e visualizzare il record della tabella ISTITUTI che ha il campo Codice_scuola caricato con identico valore.

Le query su più tabelle Il concetto di legame, come percorso di navigazione fra tabelle all interno di una base dati, va esteso ad un complesso di più di una tabella, come mostrato di seguito (caso di 3 tabelle) 8

Ha senso l interrogazione A quale scuola afferisce il docente Pinco Pallino e quale è il suo stipendio? 9

Query 4-1 Ricerca per ogni docente le informazioni seguenti: cognome, nome e scuola di afferenza. ( Le tabelle coinvolte sono ISTITUTI e DOCENTI) 10

L istruzione SQL: SELECT DOCENTI.Cognome, DOCENTI.Nome, ISTITUTI.Nome_scuola FROM ISTITUTI INNER JOIN DOCENTI ON ISTITUTI.Codice_scuola = DOCENTI.Codice_scuola; 11

L alternativa Se si esegue un INNER JOIN allora l istruzione può avere la condizione di join integrata nella clausola WHERE: SELECT DOCENTI.Cognome, DOCENTI.Nome, ISTITUTI.Nome_scuola FROM ISTITUTI, DOCENTI WHERE ISTITUTI.Codice_scuola = DOCENTI.Codice_scuola 12

13

Altri join in ACCESS: E possibile eseguire il LEFT JOIN ed il RIGHT JOIN Non è possibile eseguire il FULL JOIN. 14

Query 4-1-L Ricerca per ogni docente le informazioni seguenti: cognome, nome e scuola di afferenza mostrando tutti gli Istituti (anche quelli senza Docenti). 15

L istruzione SQL: SELECT DOCENTI.Cognome, DOCENTI.Nome, ISTITUTI.Nome_scuola FROM ISTITUTI LEFT JOIN DOCENTI ON ISTITUTI.Codice_scuola = DOCENTI.Codice_scuola; 16

17

Query 4-1-R Ricerca per ogni docente le informazioni seguenti: cognome, nome e scuola di afferenza mostrando tutti i Docenti (anche quelli senza Istituto). 18

L istruzione SQL: SELECT DOCENTI.Cognome, DOCENTI.Nome, ISTITUTI.Nome_scuola FROM ISTITUTI RIGHT JOIN DOCENTI ON ISTITUTI.Codice_scuola = DOCENTI.Codice_scuola; 19

20

Query4-2 Selezionare i soli docenti delle scuole materne con visualizzazione dei campi Cognome e Nome del docente e del Nome della scuola. 21

L istruzione SQL: SELECT DOCENTI.Cognome, DOCENTI.Nome, ISTITUTI.Nome_scuola FROM ISTITUTI INNER JOIN DOCENTI ON ISTITUTI.Codice_scuola = DOCENTI.Codice_scuola WHERE ISTITUTI.Tipo_scuola="M"; 22

23

Query4-3 Selezionare i campi Cognome, Nomi, Nomi scuole di afferenza di tutti i soli docenti di ruolo Nota: il criterio yes/no può essere sostituito da -1/0 24

L istruzione SQL: SELECT ISTITUTI.Nome_scuola, DOCENTI.Cognome, DOCENTI.Nome, DOCENTI.Diruolo FROM ISTITUTI INNER JOIN DOCENTI ON ISTITUTI.Codice_scuola = DOCENTI.Codice_scuola WHERE DOCENTI.Diruolo=yes; 25

26

Query4-4 Selezionare i campi Cognome, Titolo di studio, Di ruolo e Responsabile per i soli docenti di ruolo laureati 27

L istruzione SQL: SELECT DOCENTI.Cognome, DOCENTI.Titolo_studio, DOCENTI.Diruolo, ISTITUTI.Responsabile FROM ISTITUTI INNER JOIN DOCENTI ON ISTITUTI.Codice_scuola = DOCENTI.Codice_scuola WHERE DOCENTI.Titolo_studio="L" AND DOCENTI.Diruolo=-1; 28

29

Query4-5 Selezionare i campi Cognome, Nome, Nome_scuola dei soli docenti delle scuole esistenti nel quartiere di Chiaia 30

L istruzione SQL: SELECT istituti.nome_scuola, DOCENTI.Cognome, DOCENTI.Nome FROM ISTITUTI INNER JOIN DOCENTI ON ISTITUTI.Codice_scuola = DOCENTI.Codice_scuola WHERE ISTITUTI.Quartiere="Chiaia"; 31

32

Le query di analisi dei dati Una delle caratteristiche di SQL è la capacità di ottenere informazioni riassuntive in modo pressochè istantaneo da insiemi specifici di record delle tabelle. Es.: il numero di docenti afferenti ad una data scuola 33

Gli Operatori aggregati di ACCESS Somma Totale dei valori contenuti in un campo Media Media dei valori contenuti in un campo. Min Il valore più basso in un campo. Max Il valore più alto in un campo Conteggio Numero di valori in un campo, esclusi i valori Null (all) 34

Le funzioni nella riga Formula DevSt Deviazione standard dei valori contenuti in un campo Var Varianza dei valori contenuti in un campo Raggruppamento Definire i gruppi per i quali si desidera eseguire i calcoli. Per visualizzare, ad esempio, le vendite totali per categoria, selezionare Raggruppamento per il campo Nome categoria 35

La funzione raggruppamento Ricerca per ogni Istituto le informazioni: Nome, quartiere e raggrupparli per quartiere 36

L istruzione SQL: SELECT Nome_scuola,Quartiere FROM ISTITUTI GROUP BY Quartiere, Nome_scuola; Nota: in ACCESS dobbiamo inserire tutti i campi selezionati in almeno una clausola. 37

Raggruppamento 38

Query di conteggio (Query 4-6) Quantificare i docenti di ogni scuola Nota: nella prima funzionalità i docenti vengono raggruppati sul campo Nome scuola (tutti i docenti di ogni scuola) e successivamente per ogni scuola conteggiati 39

L istruzione SQL: SELECT ISTITUTI.Nome_scuola, COUNT(DOCENTI.Cognome) AS [nr docenti] FROM ISTITUTI INNER JOIN DOCENTI ON ISTITUTI.Codice_scuola = DOCENTI.Codice_scuola GROUP BY ISTITUTI.Nome_scuola 40 Nota: in ACCESS quando un alias ha spazi vuoti, si racchiude tra parentesi quadre.

41

Query di somma (Query 4-7) Conteggiare il numero complessivo di classi per ogni quartiere 42

L istruzione SQL: SELECT Quartiere, SUM(Nro_classi) AS [classi per quartiere] FROM ISTITUTI GROUP BY Quartiere; Nota: in ACCESS dobbiamo inserire tutti i campi selezionati in almeno una clausola. 43

44

Query di sottoinsieme (Query 4-7bis) Selezionare i Quartieri con numero di Classi superiore a 70 45

L istruzione SQL: SELECT Quartiere, SUM(Nro_classi) AS [classi per quartiere] FROM ISTITUTI GROUP BY Quartiere HAVING SUM(Nro_classi)>70; 46

47

Query di max (Query 4-8) Selezionare lo Stipendio Massimo dalla tabella Accessori 48

L istruzione SQL: SELECT MAX(Stipendio) AS MaxStipendio FROM ACCESSORI; 49

50

Query di calcolo (Query 4-9) Per ogni Livello della tabella ACCESSORI, il numero degli stipendi e calcolarne la somma, la media, il minimo ed il massimo 51

L istruzione SQL: SELECT Livello, Count(Stipendio) AS [Nr degli Stipendi], SUM(Stipendio) AS [Somma Stipendi], AVG(Stipendio) AS [Stipendio medio], MIN(Stipendio) AS [Stipendio minimo], MAX(Stipendio) AS [Stipendio massimo] FROM ACCESSORI GROUP BY Livello; 52

53

Query di calcolo (Query 4-10) Generare una query che per ogni Istituto totalizzi il numero e l ammontare medio degli stipendi dei docenti 54

L istruzione SQL: 55 SELECT ISTITUTI.Nome_scuola, COUNT(DOCENTI.Cognome) AS [Nr Stipendi], AVG(ACCESSORI.Stipendio) AS [Stipendio medio] FROM ISTITUTI INNER JOIN (DOCENTI INNER JOIN ACCESSORI ON DOCENTI.Codice_docente = ACCESSORI.Codice_Docente) ON ISTITUTI.Codice_scuola = DOCENTI.Codice_scuola GROUP BY ISTITUTI.Nome_scuola;

56

Generazione di un campo calcolato in una query È possibile, nell ambito di un dynaset, di generare dei campi operando sulla base di campi esistenti Notiamo che essendo un dynaset il risultato non è memorizzato, ma calcolato di volta in volta 57

Query di calcolo (Query 3-12) Per ogni docente si vuole determinare il campo Stipendio base pari alla somma dei valori contenuti nei campi Stipendio ed Indennità. La sintassi da usare nella query è Stip_base: =[Stipendio]+[Indennità] Oltre i campi nome, cognome, stipendio, indennità 58

L istruzione SQL: SELECT DOCENTI.Cognome, DOCENTI.Nome, ACCESSORI.Stipendio, ACCESSORI.Indennità, [Stipendio]+[Indennità] AS [Stipendio totale] FROM DOCENTI INNER JOIN ACCESSORI ON DOCENTI.Codice_docente = ACCESSORI.Codice_Docente 59

60

ACCESS Esercitazione Fine