我目前的要求如下
SELECT t.*, cat.name AS cat_name, user.name AS user_name
FROM products AS t
LEFT JOIN category AS cat ON cat.id=t.category_id
LEFT JOIN users AS user ON user.id=t.user_id
WHERE cat.parent_id=7
即使绑定字段cat.id
,t.category_id
为NULL
,我也需要获得结果。现在在这种情况下我没有结果。
在这种情况下可以解决什么问题?
答案 0 :(得分:1)
问题是当任一操作数为NULL时,相等(=
)始终为false。一个基本的解决方案是显式测试两个值是否都为NULL:
LEFT JOIN category AS cat
ON cat.id = t.category_id
OR (cat.id IS NULL AND t.category_id IS NULL)
P.S。善待下一个必须阅读你的代码的人(或者从现在起六个月后你自己)并且不要给你的表单字符别名。
答案 1 :(得分:0)
尝试为 -
SELECT t.*, cat.name AS cat_name, user.name AS user_name
FROM products AS t
LEFT JOIN category AS cat ON cat.id=t.category_id and cat.parent_id=7
LEFT JOIN users AS user ON user.id=t.user_id