giovedì 5 ottobre 2017

Contare numero totale record in query con Limit in mysql

Una necessità che potrebbe insorgere quando si sviluppa un'applicazione che mostra a video solo un numero limitato di risultati (usando la paginazione), è quella ottenere lo stesso il numero totale di record nella query con limit.
Se infatti si usa la sintassi mysql limit e poi si contano i record estratti utilizzando la classica sintassi num_rows, il risultato ottenuto sarà legato al limite impostato nella query.

Ecco dunque che sql ci viene in contro con un'apposita sintassi che risolve questo annoso problema.


Come contare il numero totale di record in una query che usa Limit in mysql


La sintassi mysql da utilizzare per ottenere a video solo un numero limitato di risultati da una query, ma allo stesso tempo sapere anche quanti sono i record totali della query senza limit, è la seguente:

SELECT SQL_CALC_FOUND_ROWS * FROM tabella LIMIT n;
SELECT FOUND_ROWS();


Grazie infatti alla funzione SQL_CALC_FOUND_ROWS, si predispone la query al conteggio totale dei record nonostante la presenza del limit, ed i dati vengono poi pescati dalla funzione FOUND_ROWS().

Il risultato ottenuto sarà il totale dei record presenti nella tabella, pescati con la query originale, senza però tener presente del limit.

totale record in query con Limit in mysql

Questa sintassi SELECT FOUND_ROWS abbinata al FOUND_ROWS funziona perfettamente dalla console di sql, se però la lanciate dal phpmyadmin, vi restituirà come risultato 1, che è il numero delle righe interessate e non il conteggio richiesto.
Questo perchè probabilmente phpmyadmin considera le due query come scollegate, mentre la console mysql no.

Piaciuto l'articolo? Lascia un commento!

EmoticonEmoticon