Torna in homepage www.vincenzomanzoni.com
Homepage personale e blog di Vincenzo Manzoni
 
 FAQFAQ   CercaCerca   Cerca con GoogleCerca con Google   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati   Feed AtomFeed
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

[Sistemi informativi] Soluzione (incompleta) 17/06/2003

 
Questo forum è chiuso: Non puoi inserire, rispondere o modificare gli argomenti.   Quest'argomento è chiuso: Non puoi inserire, rispondere o modificare i messaggi.    Indice del forum -> Men at work
Precedente :: Successivo  
Autore Messaggio
Andrea
Moderatore
Moderatore


Registrato: 23/12/03 13:10
Messaggi: 5200

MessaggioInviato: Dom Lug 18, 2004 6:23 pm    Oggetto: [Sistemi informativi] Soluzione (incompleta) 17/06/2003 Rispondi citando

Ecco qui lo zip (800k) contenente il testo e la mia risoluzione (scusate se è un po' spartana Smile). Commenti e segnalazioni sono bene graditi, specie se sapete fare l'interrogazione in algebra relazionale!
Top
Profilo Invia messaggio privato MSN
Billy
Utente neonato
Utente neonato


Registrato: 17/05/04 20:53
Messaggi: 47
Residenza: Bergamo

MessaggioInviato: Gio Lug 22, 2004 8:23 pm    Oggetto: Rispondi citando

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
Profilo Invia messaggio privato
Andrea
Moderatore
Moderatore


Registrato: 23/12/03 13:10
Messaggi: 5200

MessaggioInviato: Sab Lug 24, 2004 1:15 am    Oggetto: Rispondi citando

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é Very Happy ):
  • 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 Wink
  • 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 Shocked Wink )

Grazie, ciao
Top
Profilo Invia messaggio privato MSN
Billy
Utente neonato
Utente neonato


Registrato: 17/05/04 20:53
Messaggi: 47
Residenza: Bergamo

MessaggioInviato: Dom Lug 25, 2004 2:09 pm    Oggetto: Rispondi citando

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
Profilo Invia messaggio privato
Andrea
Moderatore
Moderatore


Registrato: 23/12/03 13:10
Messaggi: 5200

MessaggioInviato: Dom Lug 25, 2004 2:51 pm    Oggetto: Rispondi citando

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
Profilo Invia messaggio privato MSN
Billy
Utente neonato
Utente neonato


Registrato: 17/05/04 20:53
Messaggi: 47
Residenza: Bergamo

MessaggioInviato: Lun Lug 26, 2004 12:00 pm    Oggetto: Rispondi citando

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
Profilo Invia messaggio privato
Andrea
Moderatore
Moderatore


Registrato: 23/12/03 13:10
Messaggi: 5200

MessaggioInviato: Lun Lug 26, 2004 3:15 pm    Oggetto: Rispondi citando

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

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
Profilo Invia messaggio privato MSN
Mostra prima i messaggi di:   
Questo forum è chiuso: Non puoi inserire, rispondere o modificare gli argomenti.   Quest'argomento è chiuso: Non puoi inserire, rispondere o modificare i messaggi.    Indice del forum -> Men at work Tutti i fusi orari sono GMT 1 ora
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi


Powered by phpBB © 2001, 2005 phpBB Group
phpbb.it