我有一个SQLite数据库,其中包含一个用于文档的表,一个用于表示唯一单词的表(带有和删除常用单词)以及一个表格,用于指示在哪些文档中使用哪些单词:
CREATE TABLE Docs ( DocId INTEGER PRIMARY KEY, DocName TEXT )
CREATE TABLE Words ( WordId INTEGER PRIMARY KEY, Word TEXT )
CREATE TABLE WordsInDoc ( WordsInDocId INTEGER PRIMARY KEY,
DocId INT REFERENCES Docs(DocId),
WordId INT REFERENCES Words(WordId)
)
我正在尝试编写一个带有单词列表的查询(如上所述),并返回包含所有单词的所有文档的DocIds。
感觉就像我应该能够使用SQLite的设置操作那样,但我无法完全了解SQL。我当然可以在应用程序层中完成它,但它似乎不是正确的设计。
有人可以在这推荐正确的方法吗?
答案 0 :(得分:1)
搜索包含某些这些字词的文档,然后计算每个文档出现的字数:
SELECT DocId
FROM WordsInDoc
WHERE WordId IN (17, 23, 37, 42, 69, 105, 666)
GROUP BY DocId
HAVING COUNT(*) = 7
答案 1 :(得分:0)
select D.docID, D.docName from Docs D join wordsInDoc WID on
D.docID = WID.docID
inner join WORDS w
on w.wordId = wid.wordID
Fiddle 此处..