ECDL 5-9.

Di Giuseppe Servidio


Modulo 5 lezione 9.

Query più complesse

In questa lezione impareremo a creare query di selezione più complesse di quelle imparate nella lezione precedente. In particolare impareremo ad estrarre
solo alcuni campi di una determinata tabella e solo alcuni record della tabella stessa, che rispondono ai criteri che ci interessano. Impareremo anche
a mostrare i dati non nel modo in cui sono stati introdotti, ma ordinati nel modo da noi desiderato.

Apriamo ancora una volta il nostro database, selezioniamo la linguetta query, e scegliamo "visualizzazione struttura". Nella finestra "mostra tabella" scegliamo,
tramite le frecce, la tabella Indirizzi, passiamo con TAB o ALT + A al pulsante "aggiungi", poi tramite ALT + C o TAB, scegliamo il pulsante chiudi. Compare
la finestra di impostazione della query con la griglia che non descrivo. Se non la si ricorda bene, si puo tornare alla lezione precedente. Ora vogliamo
fare qualcosa di diverso, e precisamente scegliere, dalla casella elenco, il campo cognome. Apriamo quindi la casella elenco con alt + freccia giù e, tramite
le frecce, cerchiamo il campo cognome e premiamo ESC per chiudere la casella elenco. A questo punto potremo notare che nella prima colonna della riga campo è comparsa
la scritta cognome, e nella riga tabella è comparsa la scritta indirizzi, che è il nome della nostra tabella. Nella riga mostra, la casella di spunta è
stata attivata. Vogliamo ora aggiungere anche il campo nome alla nostra query. Per farlo, torniamo al campo cognome e, tramite tab o freccia destra, passiamo
alla colonna successiva, la seconda, apriamo nuovamente la casella elenco e scegliamo il campo nome. Non dimentichiamo di chiudere con esc la casella elenco.

Noteremo che la seconda colonna della riga campo è stata riempita con la scritta nome e la riga tabella contiene ancora indirizzi. Anche in questa colonna,
la casella di spunta della riga mostra è stata attivata.

Se eseguiamo ora questa query (per farlo usare il comando esegui dal menù query), noteremo subito che la tabella che ci viene mostrata contiene soltanto due
colonne: nome e cognome, e quattro righe che contengono i nomi e cognomi presenti nella nostra tabella. Esplorare pure tramite le frecce quanto ho descritto.
Abbiamo in questo modo eseguito una proiezione, nel senso che abbiamo estratto tutti i record della tabella, ma soltanto due campi per ognuno di essi:
appunto, cognome e nome.Vediamo ora qual è il risultato in SQL. Per farlo, scegliere visualizzazione SQL dal menù visualizza. Noteremo che non è cambiato molto
rispetto alla nostra prima query. Infatti, dopo SELECT, troveremo "indirizzi.cognome, indirizzi.nome". La parola chiave FROM è seguita, anche qui, da "indirizzi;".
Questo significa che, quando selezioniamo dei campi per inserirli nello schema, essi vengono elencati dopo SELECT, separati da virgole. Inoltre, ognuno
di essi è preceduto dal nome della tabella a cui appartiene e da un punto. Potremmo chiederci il perché di questa ridondanza: infatti nella seconda parte,
dopo FROM, è indicata la tabella Indirizzi. Questa ridondanza deriva dal fatto che Access, tramite l' operatore JOIN, consente di fare delle ricerche su
più tabelle, e che in esse possono essere presenti campi con lo stesso nome ma con appartenenza diversa (cognome di un allievo nella tabella A, di un insegnante
nella tabella B). Per evitare questa ambiguità, l' unico modo è quello di abbinare al nome del campo il nome della tabella da cui esso proviene. In questo
specifico caso, però, non serve. Facciamo allora un esperimento: cancelliamo indirizzi e punto sia prima di cognome che prima di nome. Il risultato sarà:

SELECT Cognome, Nome

FROM Indirizzi;

Se a questo punto eseguiamo la query (comando esegui dal menù query), noteremo che il risultato sarà identico.

Vediamo adesso di complicarci un po' di più la vita. Torniamo in visualizzazione struttura dal menù visualizza per ottenere la finestra di costruzione visuale
della nostra query. Ritroveremo tutto come l'avevamo lasciato. Portiamoci ora, tramite freccia giù (siamo posizionato sulla colonna cognome, riga campo)
alla riga ordinamento. Anche qui è possibile aprire una casella elenco per effettuare delle scelte. Apriamola dunque con alt+freccia giù. Vi troveremo: crescente,
decrescente, non ordinato. Posizioniamoci su crescente e premiamo esc per richiuderla. Rispetto a prima, è stata modificata la riga ordinamento del campo cognome
che adesso è crescente. Eseguiamo ancora la nostra query. Noteremo subito che le righe sono sempre quattro, le colonne sempre due, ma i cognomi sono elencati
in ordine alfabetico, come era logico aspettarsi.

Scegliamo ancora, tramite il menù visualizza, l'opzione "visualizzazione SQL", per vedere che cosa è stato aggiunto al nostro testo.

SELECT Indirizzi.Cognome, Indirizzi.Nome

FROM Indirizzi

ORDER BY Indirizzi.Cognome;

Tutto è come sempre per le prime due righe (accettiamo la pignoleria e la ridondanza di Access), ma notiamo che è stata aggiunta la parola chiave "order
by" seguita da "indirizzi.cognome", che è, in effetti, ciò che volevamo. La nostra cassetta degli attrezzi contiene ora una terza parola chiave: order
by. Essa ci consente, una volta costruita la query con select e from, di ordinare i dati estratti secondo uno o piu' campi. In questo caso abbiamo scelto
di vederli ordinati per cognome.

Soddisfatti del nostro risultato, possiamo ora chiudere la finestra della query. Questa volta però, quando Access ci chiede se vogliamo salvare le modifiche
alla struttura di query1, rispondiamo sì. Ci viene proposto il nome query1. Senza spostarci col cursore, dato che il campo è selezionato, scriviamo prova1
e premiamo INVIO. Noteremo che nella finestra delle query, è presente ora anche prova1, contrassegnata dall'icona di due piccole tabelle in parte sovrapposte.
Possiamo chiudere anche il nostro database, e considerare conclusa questa lezione.


Giuseppe Servidio
Per tornare all'indice, premi alt piu' freccia sinistra.