2010-08-17 3 views

Répondre

0

Peut-être quelque chose comme ce qui suit fonctionnerait:

SELECT * 
    FROM (SELECT RANDOM() as RANDOM_NUM, Q.* 
      FROM QUESTIONS Q) 
    ORDER BY RANDOM_NUM 

Partager et profiter.

+0

Merci pour votre réponse, mais bizarrement je reçois la même erreur à nouveau. pas autorisé à utiliser la fonction: aléatoire Est-ce un problème de sécurité? – user422644

+0

@ user422644 - ça sonne bien comme ça. Fait intéressant, cette page (http://www.sqlite.org/omitted.html) sur le site SQLite indique que GRANT et REVOKE ne sont pas supportés, donc je ne sais pas comment on pourrait contourner cela. J'aimerais pouvoir offrir plus d'idées. –

+0

Une autre façon serait de mélanger les résultats après les avoir obtenus. \t \t db.transaction ( \t \t fonction \t (transaction) { \t \t \t \t \t transaction.executeSql ( \t \t \t \t \t \t 'SELECT * FROM questions', \t \t \t \t \t \t [] , \t \tFonction\t \t \t (transaction, résultat) { \t \t \t \t \t \t \t // meilleure façon de mélanger les résultats et la boucle? \t \t \t \t \t \t}, \t \t \t \t \t \t errorHandler \t \t \t \t \t); \t \t \t}, \t \t \t transactionErrorHandler \t \t); – user422644

3

Query à l'aide d'un ordre non aléatoire, puis mélangez les résultats:

tx.executeSql('SELECT * FROM questions',[], function(tx, resultSet) { 
    var resultArray = []; 

    for(var i=0; i < resultSet.rows.length; i+=1) { 
     resultArray.push(resultSet.rows.item(i)); 
    } 

    var shuffledArray = shuffle(resultArray); 

    // do something with the shuffled array... 
}); 

shuffle() pourrait être quelque chose comme ceci: https://stackoverflow.com/a/962890/490560

+0

Ce travail pour moi! Merci! – candlejack

+0

Vous pouvez également inclure underscorejs et utiliser '_.shuffle()' ou même '_.échantillon() '; Ce dernier vous donne un résultat aléatoire de longueur donnée. – pduersteler

Questions connexes