Vi e’ mai successo di dover scegliere un elemento a caso dalla tabella di un database SQL? A me si l’altro ieri e il primo pensiero e’ stato qualcosa tipo “faccio una query per contare il numero di record, genero un numero casuale fra 0 e quel numero e faccio un’altra query per estrarre il record relativo”. Poi ho capito l’errore logico in tale ragionamento: non funziona se nella sequenza degli ID dei record ci sono buchi. Inoltre mi sono reso conto che usare due query, oltre al codice PHP, per una cosa simile era eccessivo.
Ho cosi’ provato a interrogare Google e ho trovato questa magnifica pagina che insegna un trucco davvero interessante.
In sostanza si fa la SELECT dalla tabella desiderata, ordinandola per un numero casuale (se il dialetto SQL lo supporta, altrimenti ci sono varie alternative per ottenere comunque un numero imprevedibile) ed estraendo un solo record. Quindi con una singola query all’engine del database ecco recuperato un record casuale! Idea geniale e che mi fa capire quanto io abbia ancora da scoprire e quanta voglia ho di impararlo…
Come diceva una persona per me importante “puoi apprendere la sintassi di un linguaggio in poco tempo, il difficile e’ impararne i trucchi”. E quanto avevi ragione.