数据库如下:
Class_Memberships[id,user_id,class_id]
Class_Challenges[id,challenge_id,class_id]
Challenge_attempts[id,user_id,challenge_id,timestamp,solved]
我需要计算分数,即用户完成挑战所需的尝试次数。
要在全局范围内执行此操作(不考虑类),我运行以下命令
SELECT user_id, time, count(*) as count, users.username
FROM challenge_attempts LEFT JOIN users ON
users.id = user_id WHERE status = 1
哪个可以完成工作并且似乎没有任何错误
我试图限制仅属于特定类别的用户和挑战的结果。因此我的查询变成了这个
SELECT class_memberships.class_id, user_id, count(*) as count
FROM class_memberships,users,class_challenges
WHERE class_memberships.class_id = 4 AND
users.id = user_id AND
user_id IN (
SELECT user_id
FROM challenge_attempts LEFT JOIN users ON
users.id = user_id WHERE status = 1)
AND class_challenges.challenge_id IN(
SELECT challenge_id FROM class_challenges
WHERE class_challenges.class_id = 4
)
这
SELECT class_memberships.class_id, user_id, count(*) as count
FROM class_memberships,users,class_challenges
WHERE class_memberships.class_id = 4 AND
users.id = class_memberships.user_id
部分应该让用户上课
这
SELECT user_id
FROM challenge_attempts LEFT JOIN users ON
users.id = user_id WHERE status = 1
应该得到他们的分数
最后是
SELECT challenge_id FROM class_challenges
WHERE class_challenges.class_id = 4
应该将分数限制为属于班级的挑战。但是当我尝试运行它时,字段列表中的 sql 输出列 'class_id' 不明确
我在这里想念什么?