我現在在一個複雜的MySQL查詢中搜索很多次。MySQL:複雜的查詢動態選擇?
這是一個成就係統。
表結構簡單,形式是對稱的。
第一個表(achievements_base)包含成就參考:每個成就有: - 一個ID(行的ID,自動遞增&唯一的), - 一個code_id(業績基準), - 一個rank_id(成就的子類別code_id), - 以及成就名稱(顯示用途)。
第二個表(achievements_user)包含由用戶獲得的成就:每個解鎖成就具有: - 的ID(如果行,自動遞增&獨特的), - 所述code_id(實現的參考) , - 一個rank_id(成就的code_id的子分類), - 和用戶ID。
的表格語法是:
achievements_base
id - code_id - rank_id - name
1 - 1 - 1 - foo
2 - 1 - 2 - bar
3 - 1 - 3 - foobar
4 - 1 - 4 - foofoo
5 - 2 - 1 - barbar
achievements_user
id - code_id - rank_id - user_id
1 - 1 - 1 - 1
2 - 1 - 2 - 1
3 - 2 - 1 - 1
我想顯示的成績是用戶沒有(GROUP BY code_id)
In the table exemple above, for example, expected result is, for the user_id 1 :
3 - 1 - 3 - foobar
但我不明白該怎麼做!我已經嘗試了多個查詢。
對不起,我是法國人!
謝謝!
編輯,例如查詢之一的,我試過:
SELECT AB.name
FROM achievements_base AB
RIGHT JOIN achievements_users AU
ON AU.code_id = AB.code_id AND AU.rank_id = AB.rank_id
WHERE (SELECT COUNT(*) FROM achievements_users AU WHERE AU.user_id = 1) = 0
GROUP BY AB.code_id
ORDER BY AB.code_id ASC
[告訴我們你試過的東西。](http://www.whathaveyoutried.com) – Kermit
對不起,已更新! –