【发布时间】:2013-10-20 11:54:17
【问题描述】:
这是我的表格的创建...
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)
);
我将解释我正在执行的完整步骤,然后我会征求意见。
我需要...
- 使用 games.id 值,查找该游戏的 games.questionCount 和 games.level。
- 现在由于我有 games.questionCount 和 games.level,我需要查看 questions 表中的所有行,其中 questions.level = games.level 并随机选择其中的 games.questionCount。
- 现在有了从第 2 步得到的行(也就是问题),我需要使用 games.id 值和 questions.id 值将它们放入 gameQuestions 表中。
实现此目的的最佳方法是什么?我可以用几个不同的 sql 查询来做到这一点,但我觉得真正熟练使用 sql 的人可以让它更有效率。我正在使用 sqlite3。
【问题讨论】:
-
我认为必须是两个查询,因为您需要限制 QuestionCount,据我所知,限制必须是文字。