Salve a tutti, vorrei costruire una select random pesata: ovvero la riga che devo ottenere deve essere random, però quelle che "pesano" di più dovrebbero venire fuori con maggiore frequenza.
tutte le righe sono uguali, ma alcune sono più uguali di altre![]()
scherzi a parte, ho googlato un po' a giro e ho trovato questa select
però mi trovo di fronte a due problemi:codice:SELECT * FROM mia_tabella WHERE mia condizione ORDER BY RAND() * (1/campo_peso)
1) questa select è estremamente inefficiente, visto che scorrere tutta la tabella e creare un numero random
2) nel mio caso il campo che deve dare importanza non si trova nella solita tabella, ma da un'altra parte. Per spiegarmi: devo tirare fuori un link che gli utenti postano (in maniera random), il criterio della frequenza è il numero di punti che questi utenti hanno (e si trovano in un'altra tabella).
Come potrei ottenere il solito risultato affidandomi a PHP invece che al database?
potrei usare degli array e poi fare la shuffle, ma come faccio a gestire il peso che dovrebbe avere ogni link?
grazie a tutti in anticipo