【发布时间】:2017-10-17 00:29:04
【问题描述】:
我有一张带有状态的表格和一张带有给定状态下日期的表格
s_state
---------
#id name
1 State 1
2 State 2
d_date
--------
#date #user state
2017-01-01 1 1
2017-01-02 1 1
2017-01-03 2 1
对于给定的用户,我试图获取他在每个州的次数(多少天)。如果使用状态,我当前的查询有效,但我的问题是它不会为未使用的状态返回“计数 0”。 (对于用户 1,它只会返回“State 1 used 2 times”,但我希望它返回“State 1 count = 2, State 2 count = 0”)
这是我当前的查询:
SELECT s_state.id, COUNT(date)
FROM s_state
LEFT JOIN d_date ON s_state.id = d_date.state
WHERE d_date.user = 1
GROUP BY s_state.id
【问题讨论】:
-
你只有两个状态还是X?我假设您想将所有状态加入所有用户,无论他们是否有条目?
-
没错,我想看看每个状态被用户 X 使用了多少次
-
将
d_date.user = 1移至ON子句,如重复问题中所述。 -
驾驶室您将 IF 放入您的选择中?比如 SELECT IF(COUNT(date) > 0, COUNT(date), 0)。无法检查,可能是计数为空?