用于在DB中选择行的SQL

时间:2014-01-20 09:37:14

标签: php mysql

在我的网站上,我有一个页面,用户可以一次回答一个问题。 提供的问题存储在问题表中。 当用户回答问题时,它会存储在答案表中。 在回答问题之后,它会转到下一个问题。

我的代码的工作方式现在是从问题表中选择一个问题,然后加入答案表WHERE answers.id IS NULL。 (用户没有回答这个问题。)

我需要它的工作方式与上面类似,不过它还需要检查问题是否已被用户回答,以及是否显示它并继续用户未回答的下一个问题。

我希望自己能够很好地解释自己。


我正在使用的代码

$db = db_open();
$query = "SELECT 
          questions.id, 
          questions.question
          FROM questions 
          LEFT JOIN answers ON questions.id = answers.question 
          WHERE answers.id IS NULL 
          GROUP BY questions.id";
$result = db_query($db,$query);
$result = db_fetch_array($result);
$default_question = array("id"=>$result["id"],"question"=>$result["question"]);

问题表

id  question
1   This is a question

答案表

id   user   question   answer
 1    1      1         This is an answer

1 个答案:

答案 0 :(得分:1)

试试这个:

$user_id = getUserIdOrSomethingLikeThat(); 
$query = "SELECT 
      questions.id, 
      questions.question
      FROM questions 
      WHERE NOT EXISTS (
       SELECT * FROM answers WHERE answers.question = questions.id AND answers.user = $user_id 
      ) 

还要考虑重构表定义。列名称令人困惑。这样的事情会更好:

问题表字段:id,body

回答表字段:id,question_id,user_id,body