在mysql中使用子查询创建视图

时间:2015-07-10 21:25:19

标签: mysql view

我知道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

同样,我已经构建了结果集。是否可以重写以使用单个查询创建视图。

任何帮助都很受欢迎。

1 个答案:

答案 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