我知道mysql
不支持subquery
中的view
。
我正在开发一个角色基础应用程序,它对于特定的结果集具有复杂的query
。我能够构建结果集。现在我想用结果集创建一个视图。
Sql小提琴链接:http://sqlfiddle.com/#!9/52777/1
我知道一种解决方法:为每个子查询make view
,我不喜欢它。
有没有办法用这个结果集创建一个视图。
结果集将是。
app_user.id
| role.id
(如果是多个则分开) | action.id
(如果是多个则分开)
逻辑:第二列基于user_role
,第三列基于role_action
/ action.is_anonymous
= true
同样,我已经构建了结果集。是否可以重写以使用单个查询创建视图。
任何帮助都很受欢迎。
答案 0 :(得分:0)
我能够优化query
并认为我分享了。结果集与没有subquery
的结果相同,最后我用它创建了view
。
SQL小提琴:http://sqlfiddle.com/#!9/52777/26
SELECT au.id user_id,
GROUP_CONCAT(DISTINCT ur.role_id) role_ids,
GROUP_CONCAT(DISTINCT ac.id) action_ids
FROM
app_user AS au
LEFT JOIN user_role AS ur ON au.id = ur.user_id
LEFT JOIN role_action AS ra ON ra.role_id = ur.role_id
LEFT JOIN action AS ac ON ac.id = ra.action_id OR ac.is_anonymous = TRUE
GROUP BY au.id