您好我创建了一个查询获取类别计数,其中某段时间日期。在我的数据库中,我有3个表首先是category,subcategory,subcategoryfollow。现在我想要谁用户关注子类别然后我想计入类别。对于前用户A遵循类别1的3子类别,然后用户B遵循类别1的相同3子类别然后我想要计数的类别1在查询中得到2这样想要的结果但是没有得到这种类型的结果。
这是我的查询=>
select count(*) as Count,categroyName from categroy s inner join
(
select SS.categroyId from subcategory ss
inner join
(
select count(*) as count,subcategoryId from subcategoryfollow SSS
WHERE SSS.IsFollowed = 1 and CAST(SSS.InsertDateTime as date) >= CAST('2017-07-21' as date)
AND CAST(SSS.InsertDateTime as date) <= CAST('2017-07-22' as date)
group by SSS.subcategoryId,SSS.UserId
) as tab on tab.subcategoryId = ss.subcategoryId group by SS.subcategoryId
) as res on res.categroyId = s.categroyId where s.IsDeleted = 0
GROUP BY res.categroyId,categroyName
这是我目前的o / p =&gt;
Count | categroyName
1 playing
1 Reading
这是我的预期o / p =&gt;
Count | categroyName
2 playing
1 Reading
这是我的查询和结果。现在在我的桌子上玩类别商店3子类别像板球,足球,wallyball现在2个用户遵循这3个子类别所以我想要计数2为palying类别。所以请任何人知道如何做到这一点。
答案 0 :(得分:0)
好的,试试这个
SELECT COUNT(*) as Count,categroyName FROM categroy s
INNER JOIN
(
SELECT SS.categroyId FROM subcategory ss
INNER JOIN
(
SELECT subcategoryId FROM subcategoryfollow SSS
WHERE SSS.IsFollowed = 1
AND CAST(SSS.InsertDateTime AS date) >= CAST('2017-07-21' as date)
AND CAST(SSS.InsertDateTime AS date) <= CAST('2017-07-22' as date)
) AS tab on tab.subcategoryId = ss.subcategoryId
GROUP BY SS.subcategoryId
) AS res on res.categroyId = s.categroyId WHERE s.IsDeleted = 0
GROUP BY categroyName