[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [translators] [docinfo] [indice analitico] [volume] [parte]
Attraverso l'istruzione SELECT, aggiungendo l'opzione WHERE, è possibile specificare una condizione per la selezione delle tuple desiderate. In mancanza dell'indicazione di questa opzione, l'elenco delle tuple è sempre completo. La parola chiave WHERE precede un'espressione logica, che viene valutata per ogni tupla: se l'espressione risulta valida (Vero), allora la tupla viene presa in considerazione.
In queste lezioni non viene descritto in modo dettagliato come realizzare delle espressioni logiche; tuttavia, vengono raccolte qui delle tabelle riassuntive per la loro realizzazione. Gli studenti possono usarle in modo intuitivo, ma nelle verifiche non si richiede altro che utilizzare o modificare leggermente degli esempi già mostrati.
|
|
|
|
A titolo di esempio, si vuole ottenere l'elenco delle tuple della relazione Articoli, selezionando solo quelle che riportano un prezzo di listino maggiore o uguale a 1,00 €. Si può utilizzare il programma sqlite3 in modo interattivo:
$
sqlite3 mag.db
[Invio]
SQLite version ... Enter ".help" for instructions |
sqlite>
.headers on
[Invio]
sqlite>
.mode column
[Invio]
sqlite>
SELECT * FROM Articoli WHERE Listino >= 1;
[Invio]
Articolo Descrizione UM Listino ScortaMin ---------- ----------- ---------- ---------- ---------- 102 CD-R 52x pz 1 500 201 CD-RW 4x pz 1 200 202 CD-RW 8x pz 1.5 200 301 DVD-R 8x pz 1 200 302 DVD-R 16x pz 2 200 401 DVD+R 8x pz 1 200 402 DVD+R 16x pz 2 200 501 DVD-RW 8x pz 2 200 601 DVD+RW 8x pz 2 200 |
La condizione di selezione potrebbe essere più articolata; per esempio si potrebbe decidere di selezionare gli articoli che hanno un prezzo di listino maggiore o uguale a 1,00 € e che hanno una descrizione che inizia con «DVD»:
sqlite>
SELECT * FROM Articoli
[Invio]
...>
WHERE Listino >= 1 AND Descrizione LIKE 'DVD%';
[Invio]
Articolo Descrizione UM Listino ScortaMin ---------- ----------- ---------- ---------- ---------- 301 DVD-R 8x pz 1 200 302 DVD-R 16x pz 2 200 401 DVD+R 8x pz 1 200 402 DVD+R 16x pz 2 200 501 DVD-RW 8x pz 2 200 601 DVD+RW 8x pz 2 200 |
Come sempre, si conclude il funzionamento interattivo di sqlite3 con il comando .quit:
sqlite>
.quit
[Invio]
Si prepari il file interrogazione-articoli-03.sql
, seguendo lo scheletro seguente, tenendo conto che si vuole ottenere l'elenco delle tuple della relazione Articoli, corrispondenti a dei «DVD», che abbiano un prezzo minore o uguale a 1,00 € (l'operatore da usare per rappresentare il confronto «minore o uguale» è <=).
|
Una volta completato e salvato il file interrogazione-articoli-03.sql
, se ne controlli il funzionamento con la base di dati:
$
sqlite3 mag.db < interrogazione-articoli-03.sql
[Invio]
Si dovrebbe ottenere il risultato seguente:
Articolo Descrizione UM Listino ScortaMin ---------- ----------- ---------- ---------- ---------- 301 DVD-R 8x pz 1 200 401 DVD+R 8x pz 1 200 |
Se il risultato è corretto, si proceda con la stampa:
$
sqlite3 mag.db < interrogazione-articoli-03.sql | lpr
[Invio]
Si consegni per la valutazione, la stampa ottenuta in questo modo, assieme alla stampa del file interrogazione-articoli-03.sql
.
Si prepari il file interrogazione-articoli-04.sql
, seguendo lo scheletro seguente, tenendo conto che si vuole ottenere l'elenco ordinato per livello di scorta minima delle tuple della relazione Articoli, che corrispondono a dei «CD».
|
Una volta completato e salvato il file interrogazione-articoli-04.sql
, se ne controlli il funzionamento con la base di dati:
$
sqlite3 mag.db < interrogazione-articoli-04.sql
[Invio]
Si dovrebbe ottenere il risultato seguente:
Articolo Descrizione UM Listino ScortaMin ---------- ----------- ---------- ---------- ---------- 202 CD-RW 8x pz 1.5 200 201 CD-RW 4x pz 1 200 102 CD-R 52x pz 1 500 101 CD-R 16x pz 0.5 500 |
Se il risultato è corretto, si proceda con la stampa:
$
sqlite3 mag.db < interrogazione-articoli-04.sql | lpr
[Invio]
Si consegni per la valutazione, la stampa ottenuta in questo modo, assieme alla stampa del file interrogazione-articoli-04.sql
.
Si prepari il file interrogazione-causali-02.sql
, seguendo lo scheletro seguente, tenendo conto che si vuole ottenere l'elenco delle tuple della relazione Causali che comportano un aumento (contabile) della quantità di un articolo in magazzino. Le causali che rappresentano un aumento della quantità sono quelle che, nell'attributo Variazione hanno il valore 1 (ovvero +1); pertanto, per selezionare le tuple in questione, è sufficiente verificare che questo valore sia esattamente pari a uno (utilizzando l'operatore =).
|
Una volta completato e salvato il file interrogazione-causali-02.sql
, se ne controlli il funzionamento con la base di dati:
$
sqlite3 mag.db < interrogazione-causali-02.sql
[Invio]
Si dovrebbe ottenere il risultato seguente:
Causale Descrizione Variazione ---------- ------------------- ---------- 1 Carico per acquisto 1 3 Reso da cliente 1 5 Rettifica aumento a 1 7 Rettifica diminuzio 1 9 Carico da produzion 1 11 Carico da altro mag 1 13 Saldo iniziale 1 |
Se il risultato è corretto, si proceda con la stampa:
$
sqlite3 mag.db < interrogazione-causali-02.sql | lpr
[Invio]
Si consegni per la valutazione, la stampa ottenuta in questo modo, assieme alla stampa del file interrogazione-causali-02.sql
.
Appunti di informatica libera 2006.07.01 --- Copyright © 2000-2006 Daniele Giacomini -- <daniele (ad) swlibero·org>
Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome interrogazione_selettiva_di_una_relazione.htm
[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [translators] [docinfo] [indice analitico]