如何返回多行计数

6jygbczu  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(297)

我有三个实体:用户、规则和活动
通过以下关系,一个规则有许多活动(双向)许多用户有许多活动(双向),服务器与spring一起使用springjpa
我想显示每个规则中有多少活动是一个用户启动的,但没有完成,使用sql这个查询将从一个规则返回这些活动

SELECT COUNT(*) FROM user_activity WHERE user_id=userId AND score<10 AND 
activity_id IN (SELECT id FROM activity WHERE rule_id=ruleId);

我可以用jpql来实现这一点,但是如何从每个规则返回该计数呢?所以我可以从每一条规则,有多少活动的用户
如果有人需要,我也可以提供java模型代码。
表包括用户、活动、规则和用户活动



ctrmrzij

ctrmrzij1#

我想这个问题可能是你想要的。它查找与给定规则相关联的所有活动,然后加入参与该活动但尚未完成该活动的用户(我想这就是得分<10表示的情况?)

SELECT r.id, u.id, COUNT(a.id)
FROM rule r
JOIN activity a ON a.rule_id = r.id
JOIN user_activity ua ON ua.activity_id = a.id AND ua.score < 10
JOIN user u ON u.id = ua.user_id
GROUP BY r.id, u.id

显然你可以扩大 SELECT 包括规则描述和用户名等。
我看不出“活动完成”是什么意思,所以我推测分数低于10分。如果不是这样,则需要将连接更改为 user_activity 适当地。

相关问题