Ordina per descrizione. Lavorare con il database. Ordinamento dei dati come risultato di una query SQL. Ordine del comando ORDER BY in una query

Spesso è necessario visualizzare il risultato di una query in un determinato ordine, ad esempio in ordine alfabetico. A questo scopo il DBMS dispone funzione speciale SU linguaggio SQL- ordinamento. In questo caso, il programmatore può scegliere quali campi e in quale ordine inserirli per ottenere il risultato desiderato, senza utilizzare serie competenze di programmazione.

Cos'è l'ordinamento in un database?

Lavorare con i database è costantemente associato a una grande quantità di informazioni che devono essere organizzate. Attualmente esistono numerosi DBMS con un'ampia gamma di funzioni, le più popolari delle quali sono Oracle e MS SQL. L'ordinamento delle informazioni, come una delle procedure principali nel lavoro con i database, è fornita da una speciale funzione integrata in ciascuno di essi.

I dati di classificazione consentono di semplificare il processo di ricerca e in alcuni casi aiutano a risolvere determinati problemi o a ottimizzare il funzionamento del programma. L'ordinamento SQL viene eseguito da un campo selezionato separatamente e, se necessario, se sono presenti valori identici negli elementi di questo campo, è possibile specificare Opzioni aggiuntive, definendo la posizione delle linee.

Comando Ordina

L'ordinamento SQL nel database viene fornito utilizzando la funzione ORDER BY. Pertanto, quando si emettono informazioni da un database, dopo aver specificato le colonne e le tabelle da cui verrà eseguita la lettura, la query deve specificare un comando di ordinamento e quindi determinare il campo o i campi in base ai quali verrà eseguito l'ordinamento.

Ad esempio, se hai bisogno di ottenere dati dai campi Nome ed Età della tabella Persone, visualizzando il risultato in ordine alfabetico in base alla colonna Nome, la seguente query ti aiuterà: SELEZIONA Nome, Età DA Persone ORDINA PER Nome.

Come impostare l'ordinamento?

Le condizioni moderne pongono diversi compiti ai programmatori e talvolta è necessario predeterminare in quale ordine verrà visualizzato il risultato: in ordine discendente o ascendente, in ordine alfabetico o in ordine inverso? E per fare ciò in SQL, l'ordinamento viene determinato aggiungendo una parola chiave alla query. Dopo aver selezionato i campi e le tabelle da cui ottenere le informazioni desiderate, è necessario aggiungere ORDER BY, quindi specificare il nome della colonna in base alla quale si desidera ordinare.

Per ottenere l'ordine inverso, è necessario specificare il parametro DESC dopo il nome. Se è necessario ordinare gli elementi secondo due o più criteri, allora le colonne vengono indicate separate da virgole e la priorità nella graduatoria verrà data al campo che appare per primo nell'elenco. Vale la pena notare che il parametro DESC prevede la disposizione degli elementi in ordine inverso solo in un campo, dopo il nome del quale è indicata questa parola chiave, quindi, se necessario, deve essere specificata in tutte le colonne selezionate.

Metodi di ordinamento alternativi

Se non è possibile utilizzare la funzione di ordinamento SQL incorporata, è possibile scrivere uno degli algoritmi più noti. Se è necessario ottenere l'ordinamento degli elementi più rapido, è necessario utilizzare un metodo basato sulla divisione a metà dell'array di elementi. Molto diffusi sono anche i metodi di classificazione "a bolla", in cui due elementi adiacenti vengono scambiati se posizionati in modo errato, il "pyramid sort", che manda l'elemento più grande alla fine della lista, e l'"insertion sort", che predetermina la posizione di ciascun elemento a turno.

Scrivere tu stesso un algoritmo non aumenterà in modo significativo la velocità di ordinamento, tuttavia, contribuirà allo sviluppo delle capacità di programmazione e ti consentirà anche di modificare il processo adattando lo schema di classificazione a un database specifico per migliorare l'efficienza del programma.

Quando si recuperano i dati, può essere importante ottenerli in una certa forma ordinata. L'ordinamento può essere effettuato in base a qualsiasi campo con qualsiasi tipo di dati. Può essere un ordinamento ascendente o discendente per i campi numerici. Per i campi di caratteri (testo), questi possono essere ordinati in ordine alfabetico, sebbene in sostanza sia ordinato anche in ordine ascendente o discendente. Può anche essere eseguito in qualsiasi direzione: dalla A alla Z e viceversa dalla Z alla A.

L'essenza del processo di ordinamento è ridurre la sequenza a un determinato ordine. Puoi saperne di più sull'ordinamento nell'articolo "Algoritmi di ordinamento". Ad esempio, ordinare una sequenza numerica arbitraria in ordine crescente:

2, 4, 1, 5, 9

dovrebbe risultare in una sequenza ordinata:

1, 2, 4, 5, 6

Allo stesso modo, quando si ordina in ordine crescente i valori stringa:

Ivanov Ivan, Petrov Petr, Ivanov Andrey

il risultato dovrebbe essere:

Ivanov Andrey, Ivanov Ivan, Petrov Petrov

Qui la riga "Andrey Ivanov" è stata spostata all'inizio, poiché il confronto delle stringhe viene effettuato carattere per carattere. Entrambe le righe iniziano con gli stessi caratteri "Ivanov". Poiché il simbolo “A” nella parola “Andrey” si trova prima nell’alfabeto rispetto al simbolo “I” nella parola “Ivan”, questa riga verrà posizionata prima.

Ordinamento in una query SQL

Per eseguire l'ordinamento, è necessario aggiungere il comando ORDER BY alla stringa di query. Dopo questo comando viene indicato il campo in base al quale viene eseguito l'ordinamento.

Ad esempio, utilizziamo i prodotti da tavola:

numero
(Codice articolo)
titolo
(Nome)
prezzo
(prezzo)
1 Mandarino50
2 Anguria120
3 Un ananas80
4 Banana40

I dati qui sono già ordinati secondo la colonna "num". Ora creiamo una query che visualizzerà una tabella con i prodotti ordinati in ordine alfabetico:

SELEZIONARE * DALL'ORDINE delle merci PER titolo

SELECT * FROM merci – specifica di selezionare tutti i campi dalla tabella delle merci;

ORDER BY – comando di ordinamento;

titolo – la colonna in base alla quale verrà eseguito l'ordinamento.

Il risultato dell'esecuzione di tale richiesta è il seguente:

numero titolo prezzo
3 Un ananas80
2 Anguria120
4 Banana40
1 Mandarino50

Puoi anche ordinare per qualsiasi campo della tabella.

Direzione di ordinamento

Per impostazione predefinita, il comando ORDER BY ordina in ordine crescente. Per controllare manualmente la direzione dell'ordinamento, utilizzare la parola chiave ASC (ascendente) o DESC (discendente) dopo il nome della colonna. Pertanto, per visualizzare la nostra tabella in ordine decrescente di prezzi, è necessario porre la query in questo modo:

SELEZIONARE *DA merce ORDINA PER prezzo DESC

L'ordinamento per prezzo crescente sarà:

SELEZIONARE * DALLA merce ORDINA PER prezzo ASC

Ordinamento per più campi

SQL consente l'ordinamento in base a più campi contemporaneamente. Per fare ciò, dopo il comando ORDER BY, i campi obbligatori vengono indicati separati da virgole. L'ordine dei risultati della query verrà configurato nello stesso ordine in cui sono specificati i campi di ordinamento.

colonna1 colonna2 colonna3
3 1 C
1 3 C
2 2 B
2 1 B
1 2 UN
1 3 UN
3 4 UN

Ordiniamo la tabella secondo le seguenti regole:

SELEZIONARE * DA miatabella ORDINA PER colonna1 ASC, colonna2 DESC, colonna3 ASC

Quelli. la prima colonna è ascendente, la seconda discendente, la terza di nuovo ascendente. La query ordinerà le righe in base alla prima colonna, quindi, senza infrangere la prima regola, in base alla seconda colonna. Quindi, anche, senza violare le norme esistenti, secondo il terzo. Il risultato sarà un set di dati come questo:

colonna1 colonna2 colonna3
1 3 UN
1 3 C
1 2 UN
2 2 B
2 1 B
3 1 UN
3 1 C

Ordine del comando ORDER BY in una query

L'ordinamento delle righe viene spesso eseguito insieme a una condizione per la selezione dei dati. Il comando ORDER BY viene inserito dopo la condizione di selezione WHERE. Ad esempio, selezioniamo i prodotti con un prezzo inferiore a 100 rubli, ordinati per nome in ordine alfabetico:

SELEZIONARE * DALLA merce DOVE prezzo 100 ORDINA PER prezzo ASC

La clausola ORDER BY in Access ordina i record restituiti da una query in ordine crescente o decrescente dei valori dei campi specificati.

Sintassi

SELEZIONARE field_list
DA tavolo
DOVE condizione_selezione
[, campo2 ][, ...]]]

Un'istruzione SELECT contenente una clausola ORDER BY include i seguenti elementi:

Appunti

La clausola ORDER BY è facoltativa. Dovrebbe essere utilizzato quando è necessario visualizzare i dati in forma ordinata.

L'ordinamento predefinito è crescente (dalla A alla Z, da 0 a 9). I due esempi seguenti mostrano l'ordinamento dei nomi dei dipendenti in base al cognome.

SELEZIONA Cognome, Nome
DA Dipendenti
ORDINA PER Cognome;
SELEZIONA Cognome, Nome
DA Dipendenti
ORDINA PER Cognome ASC;

Per ordinare in ordine decrescente (da Z ad A, da 9 a 0), aggiungi la parola riservata DESC alla fine di ciascun campo in base al quale desideri ordinare i record. L'esempio seguente ordina i nomi dei dipendenti in ordine decrescente di stipendio.

SELEZIONA Cognome, Stipendio
DA Dipendenti
ORDINA PER Stipendio DESC, Cognome;

Se si specifica un campo nella clausola ORDER BY che contiene dati di tipo Memo o Oggetti OLE, si verificherà un errore. Nucleo DBMS Microsoft Access non supporta l'ordinamento in base a questi tipi di campi.

La clausola ORDER BY è solitamente l'ultimo elemento in un'istruzione SQL.

È possibile includere campi aggiuntivi nella clausola ORDER BY. I record vengono prima ordinati in base al campo specificato per primo nella clausola ORDER BY. I record con gli stessi valori del primo campo vengono quindi ordinati in base al secondo campo specificato e così via.


Ciclo successivo:

Passaggio 8: ordinamento semplice

Se il risultato della tua query SQL deve diventare il materiale di partenza per un report, allora la questione dell'ordinamento dei dati in esso contenuti diventa estremamente importante, poiché è molto difficile per una persona che legge un report non correttamente ordinato trovare rapidamente il l'informazione di cui hanno bisogno. Per ordinare i dati in base alle colonne dei risultati della query (nel nostro caso, in base ai campi della tabella), SQL utilizza la parola chiave ORDER BY. Di seguito è riportato un esempio dell'ordinamento più semplice. La base è ricavata dalla richiesta del passo 2: “Richiesta con criterio di selezione semplice”. Ordiniamo i dipendenti in base al campo S_NAME (nome completo).

SELEZIONA S_NOME, S_ESPERIENZA DA D_STAFF DOVE S_ESPERIENZA

Ordinamento del risultato di una query SQL in base a un campo.

Passaggio 9. Ordinamento complesso

Spesso, e anche quasi sempre, è necessario ordinare i dati per più colonne e non sempre in ordine crescente. La sintassi SQL presuppone che dopo la parola chiave ORDER BY, un elenco di colonne separate da una virgola, nonché un metodo di ordinamento per ciascuna colonna: in ordine crescente di valori - ASC o in ordine discendente - DESC. Nell'esempio seguente mostriamo i record di tutti i dipendenti in ordine decrescente in base alla loro anzianità di servizio. Disponiamo in ordine alfabetico i dipendenti con la stessa anzianità di servizio.

SELEZIONA S_EXPERIENCE, S_NAME DA D_STAFF ORDINA PER S_EXPERIENCE DESC, S_NAME ASC


Ordinamento del risultato di una query SQL in due campi.

Molto spesso, l'ordinamento inverso viene utilizzato con colonne come [data]. Se la data memorizza, ad esempio, la data in cui sono state inserite le informazioni, durante l'ordinamento inverso, i record aggiunti di recente rispetto al resto verranno visualizzati all'inizio dell'elenco. Se la query recupera annunci di notizie dal database, allora riceviamo un elenco di annunci ordinati in ordine decrescente in base alla loro rilevanza, il che può essere estremamente utile, poiché gli annunci vengono solitamente letti dall'alto verso il basso e sui siti di notizie non vengono mostrati tutti , ma solo alcuni i più “freschi”.




Superiore