考虑以下结构:
alt text http://aeon-dev.org/pap/pap_db.png
忽略表 user_token。
现在,假设您需要获取与用户相关的所有角色,可能通过其相关组或与他直接相关。如果出现同一个角色直接与群组和用户相关,则与用户相关的角色优先于群组赋予的角色。
这是否有可能在单个查询中完成?
干杯!
最佳答案
此查询将获取单个用户直接或由组赋予的每个角色
SELECT * FROM ROLE WHERE ID IN (
SELECT ROLE_ID
FROM USER_HAS_ROLE
WHERE USER_ID = 1
UNION
SELECT ROLE_ID
FROM USER_HAS_GROUP UG
INNER JOIN GROUP_HAS_ROLE GR ON UG.GROUP_ID = GR.GROUP_ID
WHERE USER_ID = 1
)
关于sql - MySQL - 单个语句中的复杂数据查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2998227/