我有一个网页,显示每个用户(名字)收到的请求,这些请求根据4个单独的查询分成4个列表中的1个,这些查询依赖于WHERE
语句来检查'{{的值1}}'列(status
incoming,
)。
此解决方案适用于“已播放”列表。
playlisted, sidelisted, played
但是WHERE语句不允许它适用于其他3个列表中的请求。
要显示的4个列表中的每一个都需要两个计数
i)每个用户提出的请求总数。
ii)每个用户已经“播放”的请求数。
我使用JOINS和CASE语句的所有尝试都被WHERE语句所击败,该语句将计数限制在4个列表中的任何一个列表中。
答案 0 :(得分:1)
删除WHERE语句并将状态条件放在COUNT:
中SELECT
t1.FirstName,
count(*) as totalCount,
count(IF(t1.status = 'played',1,null)) as playedCount
FROM
RequestsTable t1
GROUP BY t1.FirstName;
答案 1 :(得分:0)
SELECT
t1.FirstName, count(*) cnt ,0 played,0 played2
FROM
RequestsTable t1
GROUP BY t1.FirstName
union
SELECT
t1.FirstName, 0 cnt ,count(*) played,0 played2
FROM
RequestsTable t1
WHERE t1.status = 'played'
GROUP BY t1.FirstName
union
SELECT
t1.FirstName, 0 cnt,0 played ,count(*) played2
FROM
RequestsTable t1
WHERE t1.status = 'played2'
GROUP BY t1.FirstName
尝试以上查询。 希望这会有所帮助。