这是我的问题:
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
问题有时city
或cat
等于0.如果它们等于零,我就无法加入城市或类别表,因为它们没有值在表中为0,我也不想要一个。
基本上我想要上面的查询,但我想:如果city!=0
加入cities表,如果cat!=0
加入类别表。
我不介意我是否更改了PHP或SQL,但我无法弄清楚如何实现这一目标。
答案 0 :(得分:4)
尝试在查询中使用LEFT JOIN
答案 1 :(得分:2)
正确的答案是基于预期的输出。
如果您不希望城市或类别为零的场景中的following
表中的条目,则您根本不必费心。当您使用INNER JOINS
时,只有找到具有给定城市ID或类别ID的记录时,它们才会从following
表中获取数据。
但是,如果您的要求是city
或category
值趋于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