[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico] [volume] [parte]


Capitolo 617.   Interrogazioni simultanee di più relazioni e alias

Quando si interrogano simultaneamente più relazioni, può succedere che il risultato che si ottiene contenga degli attributi di relazioni differenti, ma con lo stesso nome, oppure potrebbe non essere abbastanza esplicito il suo contenuto. Nell'istruzione SELECT con cui si esegue l'interrogazione, è possibile dichiarare dei nomi alternativi agli attributi, secondo le modalità descritte in questo capitolo.

617.1   Interrogazione simultanea delle relazioni «Movimenti», «Articoli» e «Causali»

Si riprenda il file prova-interrogazione-movimenti-articoli.sql e lo si modifichi in modo da avere il contenuto seguente:

-- Interrogazione delle relazioni "Movimenti", "Articoli" e "Causali"
-- Esercizio di: cognome nome classe
-- Data: data
-- File: prova-interrogazione-movimenti-articoli.sql

.headers on
.mode column

SELECT Movimenti.Data,
       Articoli.Descrizione AS Articolo,
       Causali.Descrizione AS Causale
       FROM Movimenti, Articoli, Causali
       WHERE Movimenti.Articolo = Articoli.Articolo
         AND Movimenti.Causale = Causali.Causale;

Si controlli di avere modificato il file prova-interrogazione-movimenti-articoli.sql in modo corretto, rispettando anche la punteggiatura; si controlli di avere salvato il file con il nome previsto, quindi si proceda con il comando seguente:

sqlite3 mag.db < prova-interrogazione-movimenti-articoli.sql[Invio]

Si dovrebbe ottenere il listato seguente:

Data        Articolo                                Causale            
----------  --------------------------------------  -------------------
2007-01-15  Dischetti da 9 cm 1440 Kibyte colorati  Carico per acquisto
2007-01-16  Dischetti da 9 cm 1440 Kibyte colorati  Scarico per vendita
2007-01-17  CD-R 52x                                Carico per acquisto
2007-01-18  CD-R 52x                                Scarico per vendita
2007-01-19  DVD+R 8x                                Carico per acquisto
2007-01-20  DVD+R 8x                                Scarico per vendita
2007-01-20  DVD+R 8x                                Reso a fornitore   
2007-01-20  CD-R 52x                                Reso a fornitore   
2007-01-21  DVD+RW 8x                               Carico per acquisto
2007-01-25  DVD+RW 8x                               Scarico per vendita

Come si può osservare, l'attributo Descrizione della relazione Articoli appare con il nome Articolo, mentre l'attributo Descrizione della relazione Causali appare con il nome Causale.

617.2   Verifica sull'interrogazione simultanea delle relazioni «Movimenti» e «Causali»

Si prepari il file interrogazione-movimenti-causali-02.sql, seguendo lo scheletro seguente, tenendo conto che si vuole ottenere l'elenco di tutte le tuple per le quali si possa stabilire un abbinamento in base al codice della causale. Precisamente, si vuole ottenere l'attributo Articolo dalla relazione Movimenti; l'attributo Descrizione dalla relazione Causali; l'attributo Data dalla relazione Movimenti. Inoltre, si vuole che l'attributo Descrizione della relazione Causali, appaia con il nome Causale.

Figura 617.3. Scheletro del file interrogazione-movimenti-causali-02.sql, da completare.

-- Interrogazione delle relazioni "Movimenti" e "Causali"
-- Esercizio di: cognome nome classe
-- Data: data
-- File: interrogazione-movimenti-causali-02.sql

.headers on
.mode column

SELECT ...
       FROM ...
       WHERE ...

Una volta completato e salvato il file interrogazione-movimenti-causali-02.sql, se ne controlli il funzionamento con la base di dati:

sqlite3 mag.db < interrogazione-movimenti-causali-02.sql[Invio]

Si dovrebbe ottenere il risultato seguente:

Articolo    Causale              Data      
----------  -------------------  ----------
2           Carico per acquisto  2007-01-15
2           Scarico per vendita  2007-01-16
102         Carico per acquisto  2007-01-17
102         Scarico per vendita  2007-01-18
401         Carico per acquisto  2007-01-19
401         Scarico per vendita  2007-01-20
401         Reso a fornitore     2007-01-20
102         Reso a fornitore     2007-01-20
601         Carico per acquisto  2007-01-21
601         Scarico per vendita  2007-01-25

Se il risultato è corretto, si proceda con la stampa:

sqlite3 mag.db < interrogazione-movimenti-causali-02.sql | lpr[Invio]

Si consegni per la valutazione, la stampa ottenuta in questo modo, assieme alla stampa del file interrogazione-movimenti-causali-02.sql.

617.3   Verifica sull'interrogazione simultanea delle relazioni «Movimenti», «Causali» e «Clienti»

Si prepari il file interrogazione-movimenti-causali-clienti-03.sql, seguendo lo scheletro seguente, tenendo conto che si vuole ottenere l'elenco di tutte le tuple per le quali si possa stabilire un abbinamento in base al codice della causale e in base al codice del cliente. Precisamente, si vuole ottenere l'attributo Articolo dalla relazione Movimenti; l'attributo Descrizione dalla relazione Causali; l'attributo Data dalla relazione Movimenti; l'attributo RagioneSociale dalla relazione Clienti. L'attributo Descrizione della relazione Causali deve apparire con il nome Causale e l'attributo RagioneSociale della relazione Clienti deve apparire con il nome Cliente.

Figura 617.5. Scheletro del file interrogazione-movimenti-causali-clienti-03.sql, da completare.

-- Interrogazione delle relazioni "Movimenti", "Causali" e "Clienti"
-- Esercizio di: cognome nome classe
-- Data: data
-- File: interrogazione-movimenti-causali-clienti-03.sql

.headers on
.mode column

SELECT ...
       FROM ...
       WHERE ...

Una volta completato e salvato il file interrogazione-movimenti-causali-clienti-03.sql, se ne controlli il funzionamento con la base di dati:

sqlite3 mag.db < interrogazione-movimenti-causali-clienti-03.sql[Invio]

Si dovrebbe ottenere il risultato seguente:

Articolo    Causale              Data        Cliente
----------  -------------------  ----------  --------------
2           Scarico per vendita  2007-01-16  Filano Filani 
102         Scarico per vendita  2007-01-18  Mevio Mevi    
401         Scarico per vendita  2007-01-20  Martino Martin
601         Scarico per vendita  2007-01-25  Mevio Mevi    

Se il risultato è corretto, si proceda con la stampa:

sqlite3 mag.db < interrogazione-movimenti-causali-clienti-03.sql \
  \        | lpr
[Invio]

Si consegni per la valutazione, la stampa ottenuta in questo modo, assieme alla stampa del file interrogazione-movimenti-causali-clienti-03.sql.

617.4   Conclusione

Il file prova-interrogazione-movimenti-articoli.sql non serve più e va cancellato.

Appunti di informatica libera 2007.02 --- Copyright © 2000-2007 Daniele Giacomini -- <daniele (ad) swlibero·org>


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome interrogazioni_simultanee_di_piu_relazioni_e_alias.htm

[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico]

Valid ISO-HTML!

CSS validator!