当字段不相等时加入表 - PHP MySQL

时间:2015-12-19 22:04:18

标签: php mysql join

我创建了两个表,一个存储了测验的问题,另一个存储了用户所做的所有答案。

第一个表叫做#34;问题"包含问题:

Field names: id|question
Eg. contents:
1|what's your fav color?
2|what's your fav animal?

第二个名为"答案"存储用户所做的所有答案:

Fields names: id|questionid|userid|answer
Eg. contents:
1|1|1|Red
1|1|3|Magenta
1|1|4|Green

我想选择那些尚未被用户回答的问题。 我将当前用户的ID存储在$ _SESSION [' id']会话中。我尝试了很多方法,为了得到这些问题,我所做的最接近的问题是:

$query = SELECT questions.*, answers.* FROM questions LEFT JOIN answers ON questions.id=answers.questionid WHERE answers.id IS NULL OR answers.userid <> '.$_SESSION['id'];

这不会起作用,因为如果在相同的问题ID的答案表中有另一个用户ID,它仍会选择该行。可能是什么问题呢?我在哪里弄乱了我的查询?

提前感谢您的所有帮助!

1 个答案:

答案 0 :(得分:1)

您的用户状况错误。由于您要尝试在特定用户和问题之间找到匹配项并且检测到不匹配,因此用户部分需要在WHERE中使用空检查进入ON子句条款;

SELECT q.* 
FROM questions q
LEFT JOIN answers a
  ON q.id = a.questionid
  AND a.userid = YOUR_USER_ID
WHERE a.id IS NULL

An SQLfiddle to test with