|
|
|
|
Strumenti |
23-10-2012, 10:32 | #1 |
Senior Member
Iscritto dal: Apr 2004
Città: La regione del Triplete
Messaggi: 5726
|
[SQL] Query complessa con viste
Ho uno schema così composto:
AEREI(aereo PK, posti) AEROPORTI(id PK, città) VOLI(numero PK, Partenza FK, Arrivo, FK, aereo FK) dove PK indica la chiave primaria ed FK la chiave esterna. Partenza e Arrivo si riferiscono alla chiave primaria di AEROPORTI, mentre aereo a quella di AEREO. Devo trovare la coppia di città tra le quali viene offerta la maggiore capacità complessiva di trasporto passeggeri. La mia soluzione fa uso di due viste (poi posto il codice): La prima, per ogni tratta di sola andata, somma i posti. La seconda, effettuando una query sulla prima, riconosce la tratta di rientro (self join dove la partenza della prima tabella è l'arrivo della seconda e l'arrivo della prima è la partenza della seconda) e poi somma i posti di ogni tratta. Il valore massimo della somma è quello desiderato e lo ottengo con una query sulla seconda vista. Codice:
create view sommaPosti(partenza, arrivo, somma) as select a.città, b.città, sum(aerei.posti) from voli, aerei, aeroporti a, aeroporti b where voli.aereo = aerei.aereo and voli.partenza = a.idaeroporti and voli.arrivo = b.idaeroporti group by voli.partenza, voli.arrivo; Codice:
create view postiComplessivi as select a.partenza as Pandata, a.arrivo Parrivo, a.somma as postiAndata, b.partenza as Rpartenza, b.arrivo as Rarrivo, b.somma as postiRitorno, a.somma+b.somma as totale from sommaPosti a, sommaPosti b where a.partenza = b.arrivo and a.arrivo = b.partenza Codice:
select Pandata, Rpartenza, max(totale) from postiComplessivi
__________________
Trattative felicemente concluse con domienico120, xbax88 ed engiel, ottimi e seri utenti. |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:31.