Precedente :: Successivo |
Autore |
Messaggio |
Andrea Moderatore

Registrato: 23/12/03 13:10 Messaggi: 5200
|
Inviato: Dom Lug 18, 2004 6:23 pm Oggetto: [Sistemi informativi] Soluzione (incompleta) 17/06/2003 |
|
|
Ecco qui lo zip (800k) contenente il testo e la mia risoluzione (scusate se � un po' spartana ). Commenti e segnalazioni sono bene graditi, specie se sapete fare l'interrogazione in algebra relazionale! |
|
Top |
|
 |
Billy Utente neonato


Registrato: 17/05/04 20:53 Messaggi: 47 Residenza: Bergamo
|
Inviato: Gio Lug 22, 2004 8:23 pm Oggetto: |
|
|
Ho provato a risolvere la parte di algebra relazionale prendendo spunto da un esercizio (pag 100) dell'eserciziario di Psaila.
L'unico problema � che in questo modo si estraggono anche le fatture con pi� di 2 articoli, mentre mi pare che la richiesta sia di avere SOLO quelle con esattamente due articoli.
Non riesco ad inserire il link diretto all'immagine con la soluzione perci� dovete andare su http://mio.discoremoto.virgilio.it/billyb e cercare il file Alg_rel.jpg
Ciao _________________ .... perch� la vita � un brivido che vola via, � tutto un equilibrio sopra la follia.....
Sally - Vasco Rossi |
|
Top |
|
 |
Andrea Moderatore

Registrato: 23/12/03 13:10 Messaggi: 5200
|
Inviato: Sab Lug 24, 2004 1:15 am Oggetto: |
|
|
Billy ha scritto: | Ho provato a risolvere la parte di algebra relazionale prendendo spunto da un esercizio (pag 100) dell'eserciziario di Psaila.
L'unico problema � che in questo modo si estraggono anche le fatture con pi� di 2 articoli, mentre mi pare che la richiesta sia di avere SOLO quelle con esattamente due articoli.
Non riesco ad inserire il link diretto all'immagine con la soluzione perci� dovete andare su http://mio.discoremoto.virgilio.it/billyb e cercare il file Alg_rel.jpg
Ciao |
Anche io ho fatto cos�, mi sa che probabilmente intendeva dire almeno 2 articoli... mi permetto di segnalarti due cose della tua soluzione (magari sbaglio n� ):
- Hai scritto selezione invece che proiezione nelle prime due operazioni dall'alto,ma sicuramente intendevi proiezione, anche perch� hai messo i parametri come se fosse tale
- La proiezione(NumeroFattura) (la seconda dall'alto, dove hai scritto selezione) puoi anche non metterla, l� porta via solo tempo, perch� la chiave su cui poi vai a fare il join ce l'hai gi�.
Io metto qui anche la mia soluzione, prova dargli un occhio se ti sembra buona... (sono le 2.15, non ti fidare troppo )
Grazie, ciao |
|
Top |
|
 |
Billy Utente neonato


Registrato: 17/05/04 20:53 Messaggi: 47 Residenza: Bergamo
|
Inviato: Dom Lug 25, 2004 2:09 pm Oggetto: |
|
|
Hai ragione, ho scritto una cosa e ne ho pensata un'altra. Le prime due operazioni erano proiezioni e non selezioni.
La proiezione(NumeroFattura) l'ho fatta solo per non portarmi dietro delle informazioni inutili durante il join, pensavo che cos� il tempo perso per la proiezione lo investo in minor occupazione della memoria per costruire la tabella del join. Per� potrebbe essere pi� conveniente non fare la proiezione e portarsi dietro gli attributi nel join.
Ho guardato la tua soluzione e mi pare corretta (tranne la proiezione(NumeroFattura) mi sembrano uguali).
Ciao _________________ .... perch� la vita � un brivido che vola via, � tutto un equilibrio sopra la follia.....
Sally - Vasco Rossi |
|
Top |
|
 |
Andrea Moderatore

Registrato: 23/12/03 13:10 Messaggi: 5200
|
Inviato: Dom Lug 25, 2004 2:51 pm Oggetto: |
|
|
Billy ha scritto: | La proiezione(NumeroFattura) l'ho fatta solo per non portarmi dietro delle informazioni inutili durante il join, pensavo che cos� il tempo perso per la proiezione lo investo in minor occupazione della memoria per costruire la tabella del join. Per� potrebbe essere pi� conveniente non fare la proiezione e portarsi dietro gli attributi nel join.
Ho guardato la tua soluzione e mi pare corretta (tranne la proiezione(NumeroFattura) mi sembrano uguali). |
Effettivamente... bisognerebbe sapere quanto ci impiega una e quanto l'altra operazione. |
|
Top |
|
 |
Billy Utente neonato


Registrato: 17/05/04 20:53 Messaggi: 47 Residenza: Bergamo
|
Inviato: Lun Lug 26, 2004 12:00 pm Oggetto: |
|
|
Mentre rifacevo l'intero tema d'esame per esercitarmi un po' mi � venuto un dubbio nell'interrogazione SQL:
nella domanda si parla di "venduti SEMPRE a un prezzo maggiore di 25 Euro".
Non mi torna per� l'interrogazione SQL che hai proposto perch� mi pare che non rispetti la clausola SEMPRE in quanto se quell'articolo � stato venduto anche solo una volta ad un prezzo inferiore ai 25 Euro, compare nel risultato della query.
A questo punto propongo:
Select Cod, Des
from art, fat, vend
where tipo=ali and cod=ca and numfat=num and
num not in (select numfat
from vend
where prezzo<25)
Scusa se la sintassi non � corretta e ho usato le abbreviazioni, ma il pranzo mi attende e devo scappare.
Ciao _________________ .... perch� la vita � un brivido che vola via, � tutto un equilibrio sopra la follia.....
Sally - Vasco Rossi |
|
Top |
|
 |
Andrea Moderatore

Registrato: 23/12/03 13:10 Messaggi: 5200
|
Inviato: Lun Lug 26, 2004 3:15 pm Oggetto: |
|
|
Mi stai mettendo un dubbio, e cio� che non mi ricordo come l'avesvo interpretato. L� l'avevo interpretato come "venduti nel 2002 ad un prezzo mai superiore ai 25 �", cio� se nel 2003 lo vendo a 26 a me non cambia (infatti la selezione relativa al 2003 l'avevo messa nell'annidata.
Per� mi sa che invece il sempre era riferito a tutte le fatture archiviate, adesso la provo a rifare meglio:
Codice: |
CREATE VIEW view1 AS (
SELECT CodiceArticolo
FROM Venduto INNER JOIN Fattura ON Numero=NumeroFattura
WHERE YEAR(Data)=2002 AND
Prezzo<=25
)
SELECT Codice, Descrizione
FROM Articolo INNER JOIN Venduto ON Codice=CodiceArticolo
INNER JOIN Fattura ON Numero=NumeroFattura
WHERE Tipo='Alimentari' AND
YEAR(Data)=2002 AND
Codice NOT IN view1
|
In pratica creo la lista di tutti gli elementi venduti almeno una volta nel 2002 a meno di 25 euro, poi mi ricavo tutti gli articoli venduti nel 2002 e faccio la sottrazione (potevo usare Except), effettivamente avevi ragione, avevo cannato di brutto! |
|
Top |
|
 |
|