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 |
|
|
|