mercoledì 30 maggio 2018

MYSQL: ordinare risultati per valori campo

Una delle cose che sicuramente si impara subito quando si utilizzano i database relazionali come mysql, è come ordinare i risultati come meglio ci aggrada.
Che sia in ordine crescente o decrescente, per un campo piuttosto che due o tre, l'ordinamento dei dati presenti nelle tabelle è un requisito fondamentale per ogni app o sito che pesca i dati da un database.

Quello che però di solito non si fa, o meglio, che capita meno di dover fare, è di ordinare i risultati per valori.
In mysql infatti, è anche possibile ordinare i campi di una tabella, per uno specifico campo, ma non solo, anche per i valori contenuti in esso.
Mi spiego meglio.
Pensiamo ad esempio di avere una tabella con dentro un campo con lo stato dei record, il classico attivo, disattivo, archiviato, in lavorazione, ecc...
Se vogliamo ordinare i record presenti nella nostra tabella mysql, in ordine di stato, specificando però noi quale (ad esempio in lavorazione, attivo, disattivo), c'è una sintassi specifica che ci consente di fare ciò, vediamo subito quale.


Come ordinare i risultati di una tabella MySql per i valori contenuti in un campo


La sintassi che consente l'ordinamente dei record per valore in mysql, è la seguente:

SELECT campo FROM tabella ORDER BY find_in_set(campo,'valore1,valore2,valore3')

Tutto qui.
Grazie all'istruzione sql find_in_set, è infatti possibile ordinare per uno specifico campo, indicando i valori d'ordinamento.
Nell'esempio sopra indicato, il campo si chiama banalmente campo, ed i valori d'ordinamento sono valore1, valore2, valore3.
Ovviamente è possibile indicare quanti valori si vuole, ed accodare anche altri campi ordinati in maniera classica, con la sintassi che tutti conoscono.

Questa funzionalità di mysql è davvero potente, ma ovviamente non bisogna abusarne troppo.
Mettendo infatti troppi ordinamenti incrociati, si rischia di ritardare l'apparizione dei risultati della ricerca.
Eventualmente valutare l'ottimizzazione del db tramite gli indici.

Piaciuto l'articolo? Lascia un commento!

EmoticonEmoticon