这是我的表格的创建......
CREATE TABLE questions(
id INTEGER PRIMARY KEY AUTOINCREMENT,
question VARCHAR(256) UNIQUE NOT NULL,
rangeMin INTEGER,
rangeMax INTEGER,
level INTEGER NOT NULL,
totalRatings INTEGER DEFAULT 0,
totalStars INTEGER DEFAULT 0
);
CREATE TABLE games(
id INTEGER PRIMARY KEY AUTOINCREMENT,
level INTEGER NOT NULL,
inclusive BOOL NOT NULL DEFAULT 0,
active BOOL NOT NULL DEFAULT 0,
questionCount INTEGER NOT NULL,
completedCount INTEGER DEFAULT 0,
startTime DATETIME DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE gameQuestions(
gameId INTEGER,
questionId INTEGER,
asked BOOL DEFAULT 0,
FOREIGN KEY(gameId) REFERENCES games(id),
FOREIGN KEY(questionId) REFERENCES questions(id)
);
我将解释我正在做的全部步骤,然后我会要求输入。
我需要......
最好的方法是什么?我可以用几个不同的sql查询来做到这一点,但我觉得像sql一样熟练的人可以让它发生更高效。我正在使用sqlite3。
答案 0 :(得分:2)
这是在一个声明中。我们假设:game_id是您要处理的游戏ID。
insert into gameQuestions (gameId, questionId)
select :game_id, id
from questions
where level = (select level from games where id = :game_id)
order by random()
limit (select questionCount from games where id = :game_id);
@Tony:sqlite doc说LIMIT表达了。上面的语句使用sqlite 3.8.0.2工作正常,并产生所需的结果。我还没有测试过旧版本。