SQLite Random не работает в браузере - PullRequest
0 голосов
/ 03 февраля 2011

Я использую jQuery и HTML для написания веб-приложения.

В настоящее время все, что он делает - это создает базу данных, добавляет данные в базу данных (проверено и работает), а затем отображает данные.

Функция, которую я использую, содержит в себе этот бит SQL:

tx.executeSql('SELECT * FROM entries ORDER BY RANDOM() LIMIT 1', [], renderResults);

Что абсолютно не работает.

Когда я удаляю часть «ORDER BY RANDOM ()», она работает нормально.

Это сводит меня с ума !!!

Обновление - вот мой код:

Это мой код:

<script src="http://www.google.com/jsapi"></script>
<script>
  google.load("jquery", "1.4.1");
</script>
<script>


var db = window.openDatabase("scores", "", "Previous Scores", 1024*1000);


  $(document).ready(function() {

    db.transaction(function(tx) {
      tx.executeSql('CREATE TABLE IF NOT EXISTS Strokes(id INTEGER PRIMARY KEY, sample TEXT, sample2 TEXT)', []);
    });


  insertScores();
  extractScores()

  });



  function insertScores() {

  var example = "One";
  var example2 = "Two"; 

    db.transaction(function(tx) {
      tx.executeSql('INSERT INTO Strokes (sample, sample2) VALUES (?, ?)', [example, example2]);
    });



    db.transaction(function(tx) {
      tx.executeSql('INSERT INTO Strokes (sample, sample2) VALUES ("example3", "example4")', []);
      tx.executeSql('INSERT INTO Strokes (sample, sample2) VALUES ("example5", "example6")', []);
    });


  }


  function extractScores() {

    db.transaction(function(tx) {
      tx.executeSql('SELECT * FROM  Strokes ORDER BY RANDOM() LIMIT 1;', [], displayResults);


    });

  }

  function displayResults(tx, rs){


       var $selectedAnswer = "";


          for (var i=0; i < rs.rows.length; i++) {
                    var row = rs.rows.item(i);

            $selectedAnswer =($selectedAnswer + 'sample: ' + row['sample'] + ', sample2: ' + row['sample2']);

                }

         alert($selectedAnswer);

  }



</script>

Если я уберу «ORDER BY RANDOM ()», это сработает, если я оставлю его, ничего не произойдет.

Ответы [ 5 ]

1 голос
/ 03 февраля 2011

Я не решил проблему, но создал обходной путь.Так как случайный выбор не работает, и выбор счетчика не даст мне цифры для игры, это долгий путь, но он даст нам случайную цифру, с которой можно запросить нашу базу данных.

1 голос
/ 03 февраля 2011

RANDOM () возвращает случайное число. ORDER BY RANDOM () будет означать «порядок по столбцу X», где X - случайный номер столбца, начиная с столбца 1. Возможно, не то, что вы ищете.

Вы пытаетесь использовать LIMIT и OFFSET?

0 голосов
/ 03 февраля 2011

мой запрос следующий:

select * from circles order by random() limit n

где n - количество необходимых строк. Работает нормально, возвращает случайные строки из одной из моих таблиц.

@ Ричард, ты должен опубликовать свою схему БД. будет легче предложить функции.

0 голосов
/ 03 февраля 2011

Не вижу, что не так с вашим запросом.

SELECT * FROM entries ORDER BY RANDOM() LIMIT 1

Из другого вопроса StackOverflow :

SELECT * FROM table ORDER BY RANDOM() LIMIT 1;

И здесь тоже:

http://www.carlj.ca/2007/12/16/selecting-random-records-with-sql/

0 голосов
/ 03 февраля 2011

попробуйте с помощью следующего:

ORDER BY RAND()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...