SQL问题 - "什么不存在"

时间:2018-01-25 00:30:58

标签: mysql sql join left-join

所以我现在已经好几个小时没有运气,而不是数据库专家,所以以为有人可以在这里帮忙?

基本上我有一个由问题,匹配答案,用户和用户组组成的数据库。

我试图选择所有问题,其中每个团队中的用户尚未在答案表中获得记录。

E.g。如果第1组用户已回答问题2,则不会为该组中的任何其他用户选择。

这是我到目前为止的尝试:

SELECT q.*
FROM questions q

LEFT JOIN answers a ON q.id = a.question
#LEFT OUTER JOIN answers a ON q.id = a.question

LEFT JOIN people p ON a.user = p.id 
LEFT JOIN groups g ON p.group = g.id 

WHERE
    q.category = 'food'

AND 
    g.id = (SELECT group FROM people WHERE id = 1)

AND
    a.id IS NULL;

我猜这是我加入群体和群体的问题,但并不完全确定。

1 个答案:

答案 0 :(得分:0)

一个解决方案:

SELECT *
FROM questions
WHERE id NOT IN (
    SELECT DISTINCT a.question
    FROM answers a
    JOIN people p ON a.user = p.id 
    JOIN groups g ON p.group = g.id
    WHERE g.id=1
)