如何在sql server中按用户从follow子类别中获取类别数?

时间:2017-07-22 08:14:12

标签: sql-server

您好我创建了一个查询获取类别计数,其中某段时间日期。在我的数据库中,我有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类别。所以请任何人知道如何做到这一点。

1 个答案:

答案 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