我有四个感兴趣的表:用户,模型,问题和标签。
“标签”包含描述用户对模型上问题的答案的行。例如用户名TEXT,中间INT,qid INT,回答TEXT
我有兴趣找出用户仍然需要提供的模型 - 问题对。要求用户为出现在各自表格中的每种模型和问题组合提供答案。因此,对于给定的用户名,我可以拥有模型ID和问题ID的行。
用户:
型号:
问题:
标签:
所以询问“什么样的模型问题对'培根'没有完成”的结果将是回归:
(1,1)(2,1)(2,2)(3,1)
答案 0 :(得分:0)
要获得所有可能的模型和问题组合,请使用交叉连接:
SELECT models.id,
questions.id
FROM models
CROSS JOIN questions
然后筛选出已完成的内容:
...
WHERE (models.id, questions.id) NOT IN (SELECT mid, qid
FROM labels);
答案 1 :(得分:0)
谢谢CL。为了正确的方向。当我使用python的sqlite3包时,这段代码对我有用。我也包含了用户名规范。但是,我不知道它是否有效:)
SELECT m.mid, q.qid
FROM models m CROSS JOIN questions q
WHERE NOT EXISTS(
SELECT 1
FROM labels l
WHERE l.username = ? AND l.mid = m.mid AND l.qid = q.qid
)
全部谢谢!