ECDL 5-09.

Di Giuseppe Servidio.

Modulo 5, lezione 09.

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.

