[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [translators] [docinfo] [indice analitico] [volume] [parte]
Attraverso l'istruzione SELECT, aggiungendo l'opzione ORDERED BY, è possibile specificare gli attributi secondo i quali ordinare il risultato. In mancanza dell'indicazione di questa opzione, l'elenco delle tuple si ottiene secondo un ordine «casuale», che solitamente coincide con la sequenza di inserimento.
A titolo di esempio, si vuole ottenere l'elenco delle tuple della relazione Articoli, in ordine di descrizione. 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 ORDER BY Descrizione;
[Invio]
Articolo Descrizione UM Listino ScortaMin ---------- ----------- ---------- ---------- ---------- 101 CD-R 16x pz 0.5 500 102 CD-R 52x pz 1 500 201 CD-RW 4x pz 1 200 202 CD-RW 8x pz 1.5 200 402 DVD+R 16x pz 2 200 401 DVD+R 8x pz 1 200 601 DVD+RW 8x pz 2 200 302 DVD-R 16x pz 2 200 301 DVD-R 8x pz 1 200 501 DVD-RW 8x pz 2 200 1 Dischetti d pz 0.2 500 2 Dischetti d pz 0.25 500 |
Con la relazione Articoli, potrebbe essere interessante un ordinamento per listino, ma in questo caso si aggiunge anche la descrizione, quando il prezzo di listino risulta uguale:
sqlite>
SELECT * FROM Articoli ORDER BY Listino, Descrizione;
[Invio]
Articolo Descrizione UM Listino ScortaMin ---------- ----------------------------- ---------- ---------- ---------- 1 Dischetti da 9 cm 1440 Kibyte pz 0.2 500 2 Dischetti da 9 cm 1440 Kibyte pz 0.25 500 101 CD-R 16x pz 0.5 500 102 CD-R 52x pz 1 500 201 CD-RW 4x pz 1 200 401 DVD+R 8x pz 1 200 301 DVD-R 8x pz 1 200 202 CD-RW 8x pz 1.5 200 402 DVD+R 16x pz 2 200 601 DVD+RW 8x pz 2 200 302 DVD-R 16x pz 2 200 501 DVD-RW 8x pz 2 200 |
sqlite>
.quit
[Invio]
Si osservi che l'ordinamento dipende dal tipo di informazione che l'attributo relativo può contenere. Per esempio, nel caso della relazione Articoli, il riordino per descrizione avviene in modo lessicografico, mentre il riordino per listino avviene in base al valore numerico.
Si prepari il file interrogazione-articoli-02.sql
, seguendo lo scheletro seguente, tenendo conto che si vuole ottenere l'elenco di tutte le tuple della relazione Articoli, ordinate in base al livello di scorta minima e di descrizione; inoltre, si vogliono ottenere solo alcuni attributi, secondo la sequenza: ScortaMin, Descrizione, Articolo.
Figura 507.4. Scheletro del file
|
Una volta completato e salvato il file interrogazione-articoli-02.sql
, se ne controlli il funzionamento con la base di dati:
$
sqlite3 mag.db < interrogazione-articoli-02.sql
[Invio]
Si dovrebbe ottenere il risultato seguente:
ScortaMin Descrizione Articolo ---------- ----------- ---------- 200 CD-RW 4x 201 200 CD-RW 8x 202 200 DVD+R 16x 402 200 DVD+R 8x 401 200 DVD+RW 8x 601 200 DVD-R 16x 302 200 DVD-R 8x 301 200 DVD-RW 8x 501 500 CD-R 16x 101 500 CD-R 52x 102 500 Dischetti d 1 500 Dischetti d 2 |
Se il risultato è corretto, si proceda con la stampa:
$
sqlite3 mag.db < interrogazione-articoli-02.sql | lpr
[Invio]
Si consegni per la valutazione, la stampa ottenuta in questo modo, assieme alla stampa del file interrogazione-articoli-02.sql
.
Si prepari il file interrogazione-clienti-01.sql
, seguendo lo scheletro seguente, tenendo conto che si vuole ottenere l'elenco di tutte le tuple della relazione Clienti, ordinate in base alla denominazione della ragione sociale, limitatamente agli attributi Cliente e RagioneSociale.
Figura 507.6. Scheletro del file
|
Una volta completato e salvato il file interrogazione-clienti-01.sql
, se ne controlli il funzionamento con la base di dati:
$
sqlite3 mag.db < interrogazione-clienti-01.sql
[Invio]
Si dovrebbe ottenere il risultato seguente:
Cliente RagioneSociale ---------- -------------- 2 Filano Filani 3 Martino Martin 1 Mevio Mevi |
Se il risultato è corretto, si proceda con la stampa:
$
sqlite3 mag.db < interrogazione-clienti-01.sql | lpr
[Invio]
Si consegni per la valutazione, la stampa ottenuta in questo modo, assieme alla stampa del file interrogazione-clienti-01.sql
.
Si prepari il file interrogazione-causali-01.sql
, seguendo lo scheletro seguente, tenendo conto che si vuole ottenere l'elenco di tutte le tuple della relazione Causali, ordinate in base al fatto che si tratti di movimenti in diminuzione o in aumento (l'attributo Variazione).
Figura 507.8. Scheletro del file
|
Una volta completato e salvato il file interrogazione-causali-01.sql
, se ne controlli il funzionamento con la base di dati:
$
sqlite3 mag.db < interrogazione-clienti-01.sql
[Invio]
Si dovrebbe ottenere il risultato seguente:
Causale Descrizione Variazione ---------- -------------------------- ---------- 12 Scarico ad altro magazzino -1 10 Scarico a produzione -1 8 Rettifica diminuzione acqu -1 6 Rettifica aumento vendite -1 4 Reso a fornitore -1 2 Scarico per vendita -1 13 Saldo iniziale 1 11 Carico da altro magazzino 1 9 Carico da produzione 1 7 Rettifica diminuzione vend 1 5 Rettifica aumento acquisto 1 3 Reso da cliente 1 1 Carico per acquisto 1 |
Se il risultato è corretto, si proceda con la stampa:
$
sqlite3 mag.db < interrogazione-causali-01.sql | lpr
[Invio]
Si consegni per la valutazione, la stampa ottenuta in questo modo, assieme alla stampa del file interrogazione-causali-01.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_ordinata_di_una_relazione.htm
[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [translators] [docinfo] [indice analitico]