MySQL - 从两个表中选择/加入 - 反转或否定

时间:2014-08-16 16:08:41

标签: php mysql sql

我想在我的网站上进行调查,我希望每个调查问题只显示给用户(已注册和登录)一次(如果已回答)。所以我做了两张桌子。

surveyQuestions(表1包含每个问题的数据):

  • surveyId
  • 问题

surveyAnswers(表2列出了每个用户对问题的答案):

  • surveyId(=表1中的surveyId)
  • 用户id
  • 等...

我需要从表surveyQuestions中选择1个问题,该问题尚未从登录用户回答(答案存储在surveyAnswers中)。浏览器中的UserId使用$_SESSION['id']处理。

我尝试了不同的JOIN方法,但没有运气,我现在迷路了。

非常感谢。

1 个答案:

答案 0 :(得分:1)

假设您的问题表中有不同的问题,并且您的答案表中的不同用户的每个问题都有多个副本,您应该可以这样做..获取针对特定用户的所有已回答问题的调查ID,然后查看在他们没有使用NOT IN

回答的问题上
SELECT whatever_you_want 
FROM surveyQuestions
WHERE surveyId NOT IN(
    SELECT surveyId 
    FROM surveyAnswers
    WHERE userId = $id -- # -- whatever your filtering id is here
)
LIMIT 1