我在SQLite中有这两个表
CREATE TABLE "freq" (
`id` INTEGER,
`translation_id` INTEGER,
`freq` INTEGER DEFAULT NULL,
`year` INTEGER,
PRIMARY KEY(`id`),
FOREIGN KEY(`translation_id`) REFERENCES `translation`(`id`) DEFERRABLE INITIALLY DEFERRED
)
CREATE TABLE translation (
id INTEGER PRIMARY KEY,
w_id INTEGER,
word TEXT DEFAULT NULL,
located_in TEXT,
UNIQUE (word, language)
ON CONFLICT ABORT
)
根据这些表中的值,我想创建第三个,其中包含每个translation.located_in
的每个freq.year
的前10个单词。这看起来像这样:
CREATE TABLE top_ten_words_by_country (
id INTEGER PRIMARY KEY,
located_in TEXT,
year INTEGER,
`translation_id` INTEGER,
freq INTEGER,
FOREIGN KEY(`translation_id`) REFERENCES `translation`(`id`) DEFERRABLE INITIALLY DEFERRED
)
到目前为止我尝试过(一个国家和一年):
SELECT * FROM freq f, translation t
WHERE t.located_in = 'Germany' ORDER BY f.freq DESC
有这些问题:
translation
中具有相同w_id
的多个单词(这意味着它们是彼此的翻译)translation.word
那么有人能为我提供一个方法来做我想要的吗?
速度对我来说是最重要的事情。
答案 0 :(得分:1)
看,你有一个笛卡尔积(你的桌子之间没有关系)。 此外,你必须使用' group by'条款。 您可以创建一个视图而不是表。 将您的查询更改为:
composer.gotoscene("main")