0
數據庫如下:Mysql的選擇crossreferencing 3個表
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'在字段列表中是不明確的
我在這裏錯過了什麼?
謝謝你的回答,伯爵應該告訴我們有多少挑戰屬於用戶解決的問題。 – ndp 2013-04-26 09:35:39