我现在在一个复杂的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
对不起,已更新! –