左连接无法检索随机列

时间:2017-01-16 06:50:34

标签: php mysql

我正在尝试编写一个MySQLi语句,我想从名为(url)的表中检索一个随机列(questions)。但是,我不想要任何随机url。此语句将取决于涉及另一个名为tracking的表的三个条件。 tracking包含三列(user_idq_idanswer)。所以最终我想要检索用户尚未回答的所有urls。例如,如果用户已经回答了问题,那么tracking就会出现这样的问题:user_id: 2 q_id: 2 answer: 1现在,当我们运行此语句时,q_id: 2不应该是随机urls之一。指出q_id也是questions的主键也很重要。

我已经尝试过这个陈述,但由于某种原因它无法运作:

$values = $db->query("
SELECT url 
  FROM questions 
  LEFT 
  JOIN tracking
    ON tracking.user_id = '$id' 
   AND questions.q_id != tracking.q_id 
   AND tracking.answer != NULL 
 ORDER 
    BY rand() LIMIT 1
");

除了用户已经回答的问题之外,如何检索随机url

1 个答案:

答案 0 :(得分:2)

你尝试加入一个不等于,所以你最终会得到一个1:n的连接,这是行不通的。 (不是在这种情况下)。

尝试这样的事情:

SELECT url FROM questions WHERE q_id NOT IN 
      (SELECT q_id FROM tracking WHERE user_id = $id 
      AND answer IS NOT NULL) 
ORDER BY rand() LIMIT 1   

这不是将变量插入Query的保存方式,请查看预处理语句: http://www.w3schools.com/php/php_mysql_prepared_statements.asp