我有2张桌子
一个有问题的表
ID Description
== ===========
1 Some Question
2 Some Question
3 Some Question
4 Some Question
另一个与每个用户的每个问题有关的问题
ID_USER ID_QUESTION ANSWER
======= =========== =========
1 2 a
1 1 b
1 3 d
2 1 e
2 4 a
3 4 c
3 2 a
正如您所看到的,用户可能没有回答问题而这是我的问题
我目前正在尝试找到用户未回答的答案。
我想要这样的东西
ID_USER ID_MISSING_QUESTION
======= ===================
1 4
2 3
2 2
3 1
3 3
我可以很容易地找到单个用户的遗漏问题,但我不能为每个用户做到这一点,因为它们非常多。
谢谢Ayoye
答案 0 :(得分:1)
快速而肮脏:
SELECT TB_USER.ID, TB_QUESTION.ID AS "Q_ID" FROM TB_USER, TB_QUESTION
minus
SELECT ID_USER, ID_QUESTION FROM tb_answer
答案 1 :(得分:0)
在期待完整答案之前,您应该发布您尝试过的SQL语句,否则有人可能会认为您希望让其他人为您编写所有代码......
然而,使用FULL OUTER JOIN
和LEFT OUTER JOIN
resp而不是简单的JOIN。 RIGHT OUTER JOIN
,取决于SQL语句中的表排序(您尚未发布),并使用IS NULL
进行过滤。
答案 2 :(得分:0)
我认为你正在寻找这样的东西:
SELECT
u.id_user,
q.id_question
FROM
questions q
CROSS JOIN users u
LEFT JOIN answers a ON (a.id_question = q.id_question and a.id_user = u.id_user)
WHERE
a.answer IS NULL
首先,您为每个用户创建每个问题的集合,然后尝试加入您的答案。然后提交已找到答案的所有结果。 :)