データベースは次のとおりです。
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
クラスに属する課題にスコアを制限することになっています。しかし、それを実行しようとすると、フィールドリストの列 'class_id' があいまいです
ここで何が欠けていますか?