|
|
ALTRI DOCUMENTI
|
||||
Dopo
aver imparato come creare le tabelle e quali tabelle creare per avere un
database efficace ed efficiente, cominceremo a vedere come estrarre le
informazioni che ci necessitano.
Infatti la semplice visualizzazione dell'intera tabella con tutti i dati in
essa contenuti non è quasi mai il modo migliore di effettuare una ricerca. Nel
caso avessimo a disposizione una tabella che contenga gli indirizzi di tutti
gli abitanti di una città e volessimo cercare l'indirizzo del sig. Mario Rossi,
sarebbe molto inefficiente doverla aprire e scorrere tutte le righe fino a
quando non troviamo il nominativo. Sarebbe ancora più complicato vedere gli
acquisti fatti dal sig. Mario Rossi presso la ditta XXX nell'anno 2002 (in
questo caso dovremmo fare ricerche su più tabelle).
Per ricercare ed estrarre queste informazioni da un database Access (e fare
anche molte altre cose) dobbiamo costruire delle query o interrogazioni.
Le query sono composte da una serie di istruzioni che dicono al database cosa
fare con i dati di una o più tabelle. In particolare vedremo che tramite queste
istruzioni sarà possibile cercare dati, modificarli, inserirne di nuovi o
cancellarli. Inizialmente ci concentreremo sulle query cosiddette di selezione,
cioè quelle che ci permettono di ricercare dati.
Le
istruzioni che compongono le query vengono fornite con il linguaggio SQL
(Structur 545d38f ed Query Language), che è il linguaggio utilizzato da tutti i
database. Access SQL è un dialetto del linguaggio SQL standard, ma vi si avvicina
molto. Più avanti nel corso tratteremo brevemente anche il linguaggio SQL, ma
per adesso utilizzeremo altri metodi per la creazione di query.
Esistono tre modi per costruire query:
usando la creazione guidata
usando la visualizzazione struttura
immettendo direttamente istruzioni SQL
Approfondiremo tutti e tre questi metodi; in questa lezione utilizzeremo la
creazione guidata.
Una cosa essenziale da ricordare prima di partire è che le query di Access sono
dinamiche; questo significa che le informazioni che verranno visualizzate sono
modificabili: se si cambia il valore di un campo da una query la modifica si
rifletterà sulla tabella corrispondente, come se la modifica fosse stata fatta
sulla tabella stessa.
E adesso partiamo con la nostra prima query.
Dopo aver aperto il nostro database dove saranno presenti una o più tabelle,
andiamo nella sezione query della finestra Database; doppio click sull'opzione
Crea una query mediante una creazione guidata.
Nella casella combinata in alto è possibile scegliere da quale tabella si
vogliono estrarre i dati (nell'esempio la tabella fornitori); sotto sono
riportati i campi contenuti nella tabella scelta; a destra, cliccando sul
pulsante con la freccia, vengono riportati i campi che vogliamo siano inseriti
nella query (per esempio il Nome, l'Indirizzo e
Nell'esempio indicato avremo tutti i nomi dei fornitori, gli indirizzi e le
città. Avremmo potuto mettere qualsiasi altro campo della tabella, anche tutti,
replicando, in questo caso, l'intera tabella.
E' possibile ordinare alfabeticamente i record cliccando con il tasto destro
del mouse su una colonna e scegliendo l'ordinamento crescente o decrescente.
Una volta chiusa la finestra, la query rimarrà sempre a disposizione e potrà
essere richiamata in qualsiasi momento.
Questo è il metodo più semplice per creare query, ma anche il più limitante. La
prossima volta vedremo di utilizzare metodi che consentono maggiori
possibilità.
La
creazione di query in visualizzazione struttura permette una maggiore
flessibilità, cioè ci permette di impostare molti più parametri e tutto ciò si
traduce in query più utili.
Vediamo ora come funziona. Iniziamo da una query semplice come quella della
lezione precedente.
In questa e altre lezioni utilizzerò alcune tabelle del database Northwind.mdb
che, essendo fornito con Access, tutti dovrebbero avere; in questo modo gli
esempi possono essere seguiti con più facilità. Per fare delle prove consiglio
di copiare il file e rinominarlo in modo da non sporcare l'originale con
oggetti di database che sono delle semplici prove.
Partenza!
Doppio click su Crea una query in visualizzazione struttura; si aprono due
finestre: in primo piano Mostra tabella ed in secondo piano la finestra di
struttura. Tramite la finestra in primo piano è possibile scegliere la tabella
(o le tabelle) interessate dalla query. Per ora selezioniamo la tabella
fornitori, click su aggiungi e chiudiamo la finestra.
La finestra di struttura è suddivisa in due parti: quella superiore contiene le
tabelle che abbiamo scelto, quella inferiore contiene la griglia per impostare
i comandi della query. Analizziamo la griglia: le colonne servono per impostare
i comandi relativi ad ogni singolo campo interessato dalla query; la prima riga
contiene l'indicazione del campo, la seconda il nome della tabella in cui è
contenuto il campo, la terza il tipo di ordinamento che deve essere seguito
nella presentazione dei dati (ascendente, discendente o nessun ordinamento), la
quarta permette di mostrare o meno i dati di una colonna comunque inclusa nella
query (vedremo più avanti l'utilità di tale opzione) e gli ultimi due
contengono i criteri per l'esposizione solo di alcuni dati.
In concreto si individuano nella tabella Fornitori i campi i cui dati riteniamo
di nostro interesse (ad esempio in questo caso NomeSocietà, Indirizzo e Città)
dopodiché dobbiamo riportarli nella prima riga delle colonne della griglia. Ci
sono diversi modi per fare questo, ma il più semplice è un doppio click su
ciascuno dei campi interessati: Access si occuperà di riempire la griglia.
A questo
punto abbiamo già impostato la stessa query della lezione precedente. Con
Visualizza e Visualizza foglio dati, avremo il risultato della query, cioè un
elenco di fornitori di cui verranno mostrati il nome, l'indirizzo e la città.
Se avessimo voluto inserire tutti i campi della tabella, anziché riportarli uno
per volta nella griglia, avremmo potuto cliccare sull'asterisco che sta in cima
alla tabella. Il simbolo dell'asterisco significa che tutti i campi della
tabella devono essere inseriti nella query.
Comunque fino a qui ci eravamo arrivati anche con la creazione guidata. Vediamo
cosa possiamo fare in più:
Innanzi tutto possiamo decidere che vogliamo che i nostri fornitori ci vengano
mostrati con un ordinati alfabeticamente: torniamo in visualizzazione struttura
e in sulla riga ordinamento in corrispondenza del campo NomeSocietà impostiamo
Crescente. Tornando al foglio dati vedremo che i nostri fornitori sono in ordine
alfabetico.
E' possibile anche impostare dei criteri che limitano la visualizzazione dei
soli dati che soddisfano determinate condizioni: è possibile visualizzare gli
indirizzi dei fornitori che hanno la sede a Parigi. Basta scrivere Parigi
racchiuso tra virgolette nella riga criteri della colonna Città. Il foglio dati
conterrà solo i fornitori con sede in quella città.
Se vogliamo un elenco di fornitori con sede a Parigi e a Berlino basta
aggiungere l'operatore or e Berlino al criterio impostato in precedenza
(attenzione solo i nomi delle città vanno messi tra virgolette).
Se invece cerchiamo uno specifico fornitore è possibile inserire il nome della
società nella riga criteri dell'apposito campo.
E' possibile inserire due criteri; ad esempio si cerca la ditta XXX o una ditta
con sede a Parigi. In questo caso nella riga criteri della colonna NomeSocietà
verrà inserito XXX e nella riga Oppure della colonna Città verra inserito
Parigi.
Come si vede da questi banali esempi la
flessibilità di queste query è notevole. Lo è particolarmente tenendo conto dei
vari operatori e comandi che possono essere utilizzati per scegliere quali dati
mostrare. Di seguito si fornisce un elenco di esempio di alcuni comandi e
relativa spiegazione. Tutti questi comandi vanno inseriti nella riga criteri
del campo che si vuol filtrare. L'elenco non ha la pretesa di essere esaustivo,
ma solo di esempio.
Comando |
Risultato |
Between #01/01/2000# and #31/12/2000# |
Restituisce i dati compresi tra il 01/01/2000 ed 31/12/2000 inclusi |
In ("Roberto", "Mario", "Marco") |
Restituisce i record che contengono le parole tra virgolette |
IsNull |
Restituisce i record vuoti |
|
Cinque caratteri qualsiasi |
< 100 |
Inferiore a 100 |
|
Uguale a 100 |
Like "r*" |
Restituisce i record che iniziano per r (seguita da qualunque altro carattere) |
Like "*r" |
Restituisce i record che finiscono per r |
Like "[a - d]*" |
Restituisce I record che iniziano per a - b - c - d seguiti da qualunque altro carattere |
Like "[a - d]?" |
Restituisce I record che iniziano per a - b - c - d seguiti da un solo carattere |
Like "Ma?co" |
Restituisce I record che cominciano per Ma seguiti da un solo carattere e finiscono per co |
Query su piu' tabelle
Lezione 9
Estrarre i dati da una sola tabella è senz'altro utile, ma
ci fornisce solo una minima parte delle informazioni contenute in un database:
il processo di normalizzazione tende infatti a "spezzettare" i dati tra tante
tabelle. E' pertanto indispensabile interrogare contemporaneamente più tabelle
per avere informazioni complesse e più complete. Se interroghiamo la tabella
fornitori avremo i nominativi di coloro da cui compriamo la merce e se
interroghiamo la tabella prodotti avremo l'elenco delle merci acquistate; ma
solo interrogando queste tabelle insieme potremo sapere da chi compriamo un
certo prodotto, o quanti e quali prodotti ci vende un certo fornitore.
Creare query su più tabelle è estremamente semplice, l'importante è ricordarsi
che per avere dati significativi si devono interrogare tabelle che siano legate
tra loro da una relazione.
Come già detto, anche in
questa lezione e nelle prossime utilizzeremo come esempio alcune tabelle del
database Northwind.mdb che tutti dovrebbero avere essendo fornito con
Access.
Per creare query su più tabelle bisogna ricorrere alla creazione in visualizzazione
struttura. Doppio click su Crea una query in visualizzazione struttura; dalla
finestra Mostra tabella aggiungiamo la tabella Fornitori e, senza chiudere la
finestra, aggiungiamo anche la tabella Prodotti. Nella parte superiore della
finestra di struttura avremo le due tabelle collegate da una riga che unisce i
campi mediante cui le due tabelle sono messe in relazione.
Facciamo un doppio click prima su NomeProdotto della tabella Prodotto e poi su
NomeSocietà della tabella Fornitori: la query è già fatta, infatti se andiamo
in visualizzazione foglio dati vedremo un elenco di tutti i prodotti ognuno dei
quali ha accanto il corrispondente fornitore.
Se poi volessimo sapere anche il nome del contatto per ogni
fornitore basterebbe tornare in visualizzazione struttura e cliccare due volte
sul Contatto nella tabella Fornitori.
La logica che è dietro a questo tipo di query è molto semplice; tra le tabelle
Prodotti e Fornitori vi è una relazione di uno a molti, cioè un fornitore ci
può vendere più prodotti, ed un prodotto viene acquistato solo da un fornitore
(non è detto che sia un esempio molto reale). Access non fa altro che estrarre
dalle due tabelle i campi che sono stati scelti (nell'esempio il campo
NomeProdotto della tabella Prodotto ed i campi NomeSocietà e Contatto della
tabella Fornitori) e ordinarli secondo la relazione, elencando i prodotti ed
riportando accanto il nome del fornitore ed il nome del contatto.
Se poi anziché un elenco volessimo sapere il fornitore di un certo prodotto
basta indicare nella riga criteri della colonna NomeProdotto il nome del
prodotto stesso. Il risultato in visualizzazione dati sarà una tabella di una
sola riga con i dati richiesti. Se invece volessimo sapere la società X che
cosa ci fornisce non dovremmo fare altro che indicare il nome della società
nella riga criteri della colonna NomeSocietà. Ancora, se la ricerca avvenisse
partendo dal nome del contatto basterebbe inserire come criterio il nominativo
del contatto.
In altre parole tutto quanto detto nella lezione precedente in tema di criteri
di ricerca, criteri di ordinamento ecc. vale anche per le query su più tabelle.
In questa lezione continueremo a parlare di query su più
tabelle, analizzando casi un po' più complessi rispetto a quelli della lezione
precedente. Più che parlare di casi astratti faremo solo degli esempi che
permettano di capire le potenzialità e ciò che è possibile fare con le query,
in modo che ognuno possa costruirne di proprie secondo le necessità.
Anche in questo caso prendiamo il nostro database Northwind ed in creazione
query in visualizzazione struttura, inseriamo le tabelle Clienti, Ordini,
Dettaglio Ordini, Prodotti. Come si vede le quattro tabelle sono collegate
l'una a l'altra da un qualche tipo di relazione.
Da queste quattro tabelle possiamo estrarre un gran numero di informazioni. Per
esempio scegliendo di visualizzare i campi NomeSocietà, DataOrdine e
NomeProdotto, otterremo come output l'elenco totale delle vendite effettuate
ove per ogni cliente verrà individuato in quale data è stato fatto l'ordine e
quali prodotti sono stati venduti.
La prima cosa che si nota è che sono state selezionate quattro tabelle, ma
vengono estratti dati solo da tre di esse; non viene estratto nessun dato dalla
tabella dettaglio ordini. Nonostante ciò la tabella Dettaglio Ordini è
essenziale per costruire questa query, dal momento che fa da raccordo fra la
tabella Ordini e la tabella Prodotti non legate da relazione diretta. Se non
fosse stata inclusa nella query questa tabella, i risultati sarebbero stati
completamente diversi (provare per credere). I campi NomeSocietà e DataOrdine,
sarebbero stati correlati (e cioè per ogni società sarebbe stata riportata la
data dell'ordine), ma la colonna prodotti avrebbe semplicemente riportato
l'elenco dei prodotti senza nessuna correlazione né con il cliente né con la
data dell'ordine.
Pertanto, quando si estraggono dati complessi, è
indispensabile includere nella query tutte le tabelle che assicurano il
collegamento tra i dati che si vogliono estrarre. Ho sottolineato i dati
che si vogliono estrarre perché questo non vuol dire che si devono includere
tutte le tabelle che hanno delle relazioni ma che nella query non servono.
Immettendo qualche tipo di criterio possiamo effettuare delle ricerche
particolari. Per esempio inserendo il nome di una società cliente (riportando
il nome della società tra virgolette nella riga criteri della colonna
NomeSocietà) verranno visualizzate tutte le vendite fatte a questa società ed
il nome dei prodotti venduti.
Inserendo anche una data (nella riga criteri della colonna DataOrdine) è
possibile visualizzare i dati di un singolo ordine (il cliente, la data
dell'ordine ed i prodotti venduti).
Se aggiungiamo anche i campi PrezzoUnitario, Quantità e Sconto della tabella
Dettaglio Ordini otteniamo tutti i dati necessari per poter stampare una
fattura (nelle prossime lezioni vedremo come fare a calcolare, con questi dati,
anche il totale da pagare).
Sostituendo il campo Città al campo NomeSocietà è possibile avere una
ripartizione territoriale delle vendite e cioè si può vedere quali prodotti
sono stati acquistati in ogni città ed in quali date. Ovviamente inserendo nei
criteri il nome della città è possibile vedere quali prodotti vengono
acquistati in una certa area territoriale.
E' evidente a questo punto che con le query è possibile estrarre tutti i dati
che vengono immagazzinati nel database e riclassificarli e riorganizzarli a
nostro piacimento con estrema facilità.
Privacy |
Articolo informazione
Commentare questo articolo:Non sei registratoDevi essere registrato per commentare ISCRIVITI |
Copiare il codice nella pagina web del tuo sito. |
Copyright InfTub.com 2024