我正在尋找在單個視圖中跨表格總結查詢,但我堅持!下面的簡化版本:基於視圖或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