我正在使用count
和group by
来了解每天有多少订阅者购物:
select count(s.email)
from subscriptions s, orders o
where o.subcription_id=s.id
group by s.created_at
结果:
created_at count
------------------
04-04-2011 1
06-04-2011 2
07-04-2011 1
10-04-2011 5
11-04-2011 9
但是我仍然希望空行返回为'0'。我该怎么做呢?请注意,我必须使用表格的两个。
created_at count
------------------
04-04-2011 1
05-04-2011 0
06-04-2011 2
07-04-2011 1
08-04-2011 0
09-04-2011 0
10-04-2011 5
11-04-2011 9
答案 0 :(得分:7)
SELECT s.created_at, COUNT(o.subsription_id)
FROM subscriptions s
LEFT JOIN
orders o
ON o.subcription_id = s.id
GROUP BY
s.created_at
答案 1 :(得分:2)
count()函数总是返回一个值(即使它是零),问题是你的一个表缺少相应的行。您需要执行外部联接以包含两个表中的行。请检查哪些表缺少行,然后放置外部联接以包括另一个表中的所有行。
SELECT s.created_at, COUNT(o.subscription_id) FROM subscriptions s LEFT OUTER JOIN order o //(Depending on situation, it can be RIGHT OUTER JOIN) ON (s.id = o.subscription_id) GROUP BY s.created_at
如果您仍然遇到问题,请发布您的表格数据。