SQLiteデータベースを作成し、少しデータを挿入するJSがあります。SQLite RANDOM()問題
私はそれを照会し、アラートとして結果の情報を吐き出す機能を持っています。
データベースからランダムなフィールドを取得しようとすると、何の結果も得られません(明らかなエラーもありません)。
<title>Golf score keeper</title>
<script src="http://www.google.com/jsapi"></script>
<script>
google.load("jquery", "1.4.1");
</script>
<script>
$(document).ready(function() {
var db = window.openDatabase("scores", "", "Previous Scores", 1024*1000);
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) {
//THIS ONE FAILS
// tx.executeSql('SELECT * FROM Strokes ORDER BY RANDOM() LIMIT 1;', [], displayResults);
tx.executeSql('SELECT * FROM Strokes 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>
誰もがこれを尋することはできますか?
RANDOM()はSQLiteのRAND()バージョンです。 http://www.bernzilla.com/2008/05/13/selecting-a-random-row-from-an-sqlite-table/ 何とか私が間違って使用している場合を除き、動作するはずです! – Richard
もちろん、chrome/firefoxのsqliteの埋め込みバージョンはこの機能をサポートしていません。 RANDOM()をidに置き換えると、クエリが機能します! – keatch
ああ、ランダムな行を得るにはどうすればいいですか?カウントを行い、それを最大値として使用し、jsを使って乱数を生成し、その乱数をクエリで使用しますか? – Richard