列的选择值不存在

时间:2012-09-18 04:18:30

标签: php mysql database opencart

我有这个php查询;

$sql = "SELECT * 
        FROM store AS s 
        LEFT JOIN setting as set ON (s.store_id = set.store_id)";
$sql .= " WHERE (set.key = 'config_template' OR set.key IS NULL)";    
$sql .= " ORDER BY url";

$query = $this->db->query($sql);

我想要做的是返回key等于“config_template”的所有行。但如果没有匹配“config_template”的键,我仍然希望返回该行,但列key将为空。

我考虑过使用NOT INNOT EXIST,但我不确定如何在这种情况下使用这些内容?

2 个答案:

答案 0 :(得分:1)

问题出在这里。

$sql .= " WHERE (set.key = 'config_template' OR set.key IS NULL)"; 

在这个where子句中,这两个条件都是true或false,但是当两个条件都为false时它将失败。

试试这个,

$sql .= " WHERE (set.key = 'config_template' OR set.key IS NULL) OR/AND SECOND_CONDITION "; 

通过这种方式你肯定会得到结果。

答案 1 :(得分:1)

将键的条件移动到JOIN条件应该可以解决问题:

SELECT * 
FROM store AS s 
  LEFT JOIN setting as set 
         ON s.store_id = set.store_id AND set.key = 'config_template'
ORDER BY url