我正在寻找在单个视图中跨表格总结查询,但我坚持!下面的简化版本:基于视图或3表查询的MySQL数据透视表
表1 users
:
usrID usrName
1 Adam
2 Ben
3 Charlie
表2 groups
:
grpID grpName
A Soccer
B Baseball
C Golf
表3 users2groups
:
usrID grpID accessLevel
1 A a
2 A e
2 C v
3 B v
这一点我想和总结:
usrName Soccer Baseball Golf
Adam a NULL NULL
Ben e NULL c
Charlie NULL v NULL
我已经成功地创建一个查询,将列出所有条目,并保存它作为MySQL的观点叫做permissions
:
SELECT users.usrName, groups.grpName, users2groups.accessLevel FROM ((`users` JOIN `groups`) LEFT JOIN `users2groups` ON (((`users2groups`.`usrID` = `users`.`usrID`) AND (`users2groups`.`grpID` = `groups`.`grpID`)))))
从看这里和其他地方,我发现一个透视表
SET @sql = NULL;
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
'MAX(IF(grpName = ''',
grpName,
''', value, NULL)) AS ',
grpName
)
) INTO @sql
FROM permissions;
SET @sql = CONCAT('SELECT usrName, ', @sql, ' FROM permissions GROUP BY usrID');
但是当我尝试在MySQL Workbench中运行该使用我的MySQL的看法,我得到Error Code: 1146. Table 'MYDB.permissions' doesn't exist
:沿着线的功能。我试图简单地将"permissions"
替换为视图基于上面的查询(在括号中),但似乎没有错误地运行,我没有得到结果集显示。
您可以创建[SQL小提琴]为例(http://sqlfiddle.com)?这会更容易看到有什么问题 – Barranka
这样做吗? http://sqlfiddle.com/#!9/fd8c3/3/0 – Adam
你没有把'permissions'表放到你的SQL小提琴中。你需要补充它吗? – Barranka