sql查询,如果值为0

时间:2015-09-16 17:39:07

标签: php mysql

这是我的问题:

SELECT f.id AS id, 
       c.city AS city,
       ca.category AS cat 
FROM following AS f 
     JOIN cities AS c ON f.city=c.id 
     JOIN categories AS ca ON f.category=ca.id 
WHERE f.member = $this->id

问题有时citycat等于0.如果它们等于零,我就无法加入城市或类别表,因为它们没有值在表中为0,我也不想要一个。

基本上我想要上面的查询,但我想:如果city!=0加入cities表,如果cat!=0加入类别表。

我不介意我是否更改了PHP或SQL,但我无法弄清楚如何实现这一目标。

3 个答案:

答案 0 :(得分:4)

尝试在查询中使用LEFT JOIN

答案 1 :(得分:2)

正确的答案是基于预期的输出。

如果您不希望城市或类别为零的场景中的following表中的条目,则您根本不必费心。当您使用INNER JOINS时,只有找到具有给定城市ID或类别ID的记录时,它们才会从following表中获取数据。

但是,如果您的要求是citycategory值趋于0时需要显示空值,那么LEFT JOIN就可以了。

SELECT f.id AS id, 
  IF(c.city IS NULL, 'NO CITY', c.city) AS city,
  IF(ca.category IS NULL, 'NO CATEGORY', ca.category) AS cat 
FROM following AS f 
LEFT JOIN cities AS c ON (f.city=c.id) 
LEFT JOIN categories AS ca ON (f.category=ca.id)
WHERE f.member = $this->id

答案 2 :(得分:0)

在应用连接条件之前,使用if条件检查city和cat的值:

NSAttributedString