PDA

View Full Version : [DB] urgentissimo domanda su query


D4rkAng3l
12-02-2007, 22:50
Allora vi prego ditemi come si fà...domani esame...e mi manca l'ultima parte sulle query...poi domani mattina leggo anche il capitolo per bene ma intanto se potete illuminatemi.

Ho un DB che rappresenta degli appartamenti strutrato con le seguenti tabelle:

TABELLA: {ATRIBUTO1; ATRIBUTO2; ATRIBUTO3}
così indico una tabella e i suoi campi

PROPRIETARIO: {NOME; COGNOME; INDIRIZZO}
APPARTAMENTO: {ID-APPARTAMENTO; METRATURA}
PIANO: {NUMERO PIANO}
BOLLETTA: {ID-BOLLETTA; COSTO SPESE}
APPARTENENZA: {NOME; COGNOME; ID-APPARTAMENTO; GESTORE(SI O NO)}
UBICAZIONE: {NUMERO PIANO; ID-APPARTAMENTO}
SPESE:{APPARTAMENTO; BOLLETTA}

Spero che sia abbastanza chiaro.

Per esempio la tabella APPARTENENZA contiene il campo GESTORE che è booleano: se è vero il proprietario identificato dalla key NOME e COGNOME è anche il gestore dell'appartamento e deve ricevere lui le bollette.

Se voglio fare una query che estrae il costo delle bollette per ogni proprietario che è anche gestore e l'indirizzo a cui spedirle cosa dovrei fare?

Credo che dovrei UNIRE in qualche modo 3 tabelle che sono:

APPARTENENZA, SPESE e BOLLETTA come per creare una nuova tabella che le contenga tutte e 3 (credo che posso unirle perche APPARTENENZA e SPESE hanno il campo ID-APPARTAMENTO in comune e SPESE e BOLLETTA hanno il campo ID-BOLLETTA in comune: una volta che il dbms vede questa nuova tabellona devo selezionare tutte le righe aventi il campo GESTORE impostato su TRUE e restituire i campi: COSTO SPESE e INDIRIZZO.

Vi prego ditemi come si fà....la logica credo di averla capito ma per domani alle 14 devo aver imparato anche la sintassi e ho pochissimo tempo.

Vi ringrazio tutti
Andrea

loris_p
12-02-2007, 23:06
SELECT p.nome, p.cognome, p.indirizzo, b.costo
FROM bolletta b, spese s, proprietario p, appartenenza a
WHERE b.id-bolletta=s.bolletta
AND s.appartamento=a.id-appartamento
AND a.nome=p.nome
AND a.cognome=p.cognome
AND a.gestore='si'

D4rkAng3l
12-02-2007, 23:08
oddio ti venero...gli ho dato una rapida occhiata e mi pare abbastanza facile...la logica era giusta quella che avevo detto io?

loris_p
12-02-2007, 23:11
si ;)
quando hai individuato il percorso chiave esterna->chiave primaria per arrivare ai dati che ti servono basta che aggiungi condizioni nel where per linkare tutto :D