今天早些时候,我在SO Count() and left join problem
提出了这个问题如上所述,我的问题的正确查询是:
select s.name
, p.name
, count(p.id)
from Shop as s
left join Product as p on p.shop=s.id AND p.status <> '8796107276379'
group by
s.id, p.name
我们使用专有框架,允许我们为在系统上运行的查询添加限制。我很确定它是通过在查询结尾附加where
子句来实现的。
问题是我是否可以p.status <> '8796107276379'
在where
子句中的方式翻译上述查询,以便我可以将其添加为限制?
Count() and left join problem处的其他答案都将条件放在where
子句中,但都没有奏效。
有什么想法吗?
提前致谢!
Krt_Malta
答案 0 :(得分:2)
select s.name
, p.name
, count(p.id)
from Shop as s
left join Product as p on p.shop=s.id
where
p.shop is null or p.status <> '8796107276379'
group by
s.id, p.name
这适用于Oracle和MySQL,但它可能在SQL Server上失败(不确定)。
答案 1 :(得分:1)
当然......(对于SQL Server)
select s.name
, p.name
, count(p.id)
from Shop as s
left join Product as p on p.shop=s.id
where IsNull(p.status,'') <> '8796107276379'
group by
s.id, p.name