Visual Basic Simple
Il linguaggio SQL
La clausola ORDER BY
Sincronizza Indice
Sincronizza Indice
Scarica il progetto
Scarica il progetto
Scarica il testo dell'articolo
Testo dell'articolo
Stampa l'articolo
Stampa l'articolo
Ricerca personalizzata

Difficoltà: 1 / 5

Uno tra i più semplici operatori del linguaggio SQL, ORDER BY consente di ordinare i risultati secondo certi criteri. La sua sintassi generale è:

ORDER BY <campo> [ ASC | DESC ]

Si applica generalmente alle selezioni, per ottenere un elenco di righe già ordinato per ciascuno dei campi indicati. L'ordinamento è possibile sia in maniera ascendente (ASC), cioè dalla A alla Z, che rappresenta il valore di default, se omesso, che in maniera discendente (DESC) che rappresenta l'ordine contrario, cioè da Z verso A.

L'ordine dei numeri rispetto i caratteri alfabetici dipende dall'implementazione del singolo driver; solitamente su ambiente Windows i numeri vengono prima delle lettere. I database più importanti consentono anche la scelta di un criterio di ordinamento (collation) durante la creazione della tabella.

L'utilizzo dell'operatore ORDER BY è molto semplice:

SELECT * FROM dipendenti ORDER BY id

Ordinerà le righe restituite in ordine crescente (ascendente) del campo ID.

SELECT nome, cognome FROM dipendenti ORDER BY nome

Tutti i nomi saranno ordinati in maniera ascendente, mentre i cognomi saranno lasciati nel loro ordine casuale. È possibile ordinare i risultati anche per più campi, al fine di ottenere un insieme di righe correttamente ordinato.

SELECT nome, cognome FROM dipendenti ORDER BY nome, cognome

Istruzione assolutamente equivalente a:

SELECT nome, cognome FROM dipendenti ORDER BY nome ASC, cognome ASC

In quanto, come già detto, il criterio di ordinamento predefinito è quello ascendente. È però possibile invertire l'ordine di uno o di entrambi i campi:

SELECT nome, cognome FROM dipendenti ORDER BY nome ASC, cognome DESC

Riporterà i campi nome e cognome di tutte le righe della tabella dipendenti, ordinate per nome (dalla A alla Z) e quindi per ordine inverso di cognome (dalla Z alla A).

Nei casi di omonimia fra due campi di due tabelle, in maniera analoga a quanto visto in precedenza, è possibile specificare il nome della tabella a cui il campo da ordinare appartiene, come segue:

SELECT dip.id, dip.nome, dip.cognome, saldi.totale
FROM dipendenti dip, saldi
WHERE an.id=saldi.id
ORDER BY saldi.totale DESC, an.id ASC

Estrarrà ID, Nome, Cognome e Totale di tutte quelle persone che compaiono sia nella tabella dipendenti che in quella dei saldi; il risultato verrà ordinato in maniera decrescente per totale del saldo (dal maggiore al minore) e quindi per ID in ordine crescente. Se due nominativi presentano lo stesso totale, saranno a loro volta ordinati per ID.


I valori Null nell'ordinamento sono considerati come il valore più basso, cioè in caso di ordinamento ascendente sono presentati per primi, mentre in caso di ordinamento discendente sono ordinati per ultimi.

Alcuni database consentono l'ordinamento anche per valori non inclusi nell'elenco dei campi da restituire, mentre altri pretendono che ogni campo presente all'interno della definizione ORDER BY sia presente anche nell'elenco dei campi scelti a fianco dell'istruzione SELECT.

Fibia FBI
14 Marzo 2004

Scarica il progetto
Scarica il progetto
Scarica il testo dell'articolo
Scarica il testo dell'articolo
Stampa l'articolo
Stampa l'articolo
Torna all'indice della sezione Database