vuoi
o PayPal
tutte le volte che vuoi
6. Ordinamento di relazioni
6.1 Forma generale
La forma generale di una SELECT che deve ordinare uno o più attributi prima di restituire la relazione risultato è data da:
SELECT . . . . FROM . . . . . ORDER BY nome_col1 [DESC] [,nome_col2, . . .];
Come si vede dalla forma generale, di seguito alla parola ORDER BY, possono essere specificate una o più colonne su cui effettuare l'ordinamento. Il criterio di ordinamento è crescente ma è possibile modificarlo con la specificazione della clausola DESC.
Prima di passare agli esempi, una precisazione. Abbiamo visto che alcune tuple possono presentarsi con alcuni valori nulli. Si tenga presente che, in caso di ordinamento, verranno riportate per prime le tuple contenenti i valori nulli (ovviamente nelle colonne specificate dopo ORDER BY), poi, a seconda del criterio di ordinamento, tutti gli altri valori. Così, ad esempio, se si chiede un ordinamento di un attributo contenente valori numerici in modo crescente,
verranno riportate perprime le tuple con gli scalari pari a NULL, poi i valori negativi, i valori uguali a zero e infine i datimaggiori di zero.La prima query restituisce i nomi e i codici delle case costruttrici, ordinati alfabeticamente secondo il nome della casa. Il suo testo ed il risultato ottenuto, sono riportati di seguito.
SELECT casa, nocasa FROM marche ORDER BY casa;
Risultato:
CASA | NOCASA |
---|---|
citroen | 0 |
de tomaso | 1 |
ferrari | 2 |
fiat | 3 |
tretre | 46.2 |
La seconda query costituisce un esempio relativo all'ordinamento su due attributi: sul primo attributo l'ordinamento è quello normale, mentre per il secondo l'ordinamento è decrescente. Si nota infatti come, nel caso di modelli con la stessa cilindrata (questo è il caso dei tre modelli cx e dei due modelli della ferrari), le tuple sono disposte secondo l'ordine decrescente del prezzo (grazie alla specificazione della clausola DESC di seguito all'attributo LIT).
SELECT * FROM modelli ORDER BY cil, lit DESC;Il risultato corrispondente è il seguente: ```html
SELECT nome, cc, lit
FROM modello
ORDER BY cc, lit DESC;
[18]
```