Salve a tutti,
ho provato a fare la seguente query ma mi dice che faccio un uso di union e order by:
Come faccio a dirgli, in SQl-2 standard (non mysql o altro) di ordinarmi il risultato dell'intera unione per giornosett crescente?codice:Select * from giornosettimana order by giornosett union select giornosett, coalesce(0) from volo where giornosett != all(select giornosett from giornosettimana) order by giornosett;
Inoltre vorrei chiedervi se la query si può scrivere in maniera più pulita, il database è formato dalle seguenti tabelle:
aereoporto(citta , nazione, numpiste);
volo(idvolo, giornosett , cittapart, oraprt, cittadest, oradest, tipoaereo);
aereo(tipoaereo , numpasseggeri, qtamerci);
Ora l'esercizio chiede:
La query di sopra, viene applicata a giornosett che è la seguente visita:Per ciascun giorno della settimana, il massimo numero di passeggeri in aprtenza da un qualsiasi aereoporto italiano ed in arrivo a milano
Mi chiedevo quindi, oltre che come risolvere il problema della order by, come poter snellire la query, in particolar modo se conoscete un modo abbastanza leggibile (ovvero senza creare troppe query annidate) per fare tutto in un unica query senza creare la visita.codice:create view giornosettimana as select v.giornosett, sum(a.numpasseggeri) from volo v join (aereoporto ar, aereo a) on v.tipoaereo = a.tipoaereo and v.cittapart = ar.citta where ar.nazione = 'italia' and v.cittadest = 'milano' group by v.giornosett;
A me altre idee non sono venute e creare la visita è l'unico modo che mi è venuto per rendere più facile la query, però non vorrei che sono io che l'ho creata in maneira sbagliata. Tra l'altro c'è quel problema che non riesco ad applicare l'ordinamento sull'unione.
Vi ringrazio in anticipo,
Neptune.


Rispondi quotando
