MySql交叉表3表,T1 =行,T2 =列,T3 =值

时间:2015-06-24 14:00:53

标签: mysql crosstab

我需要在所有可能的页面(T2)中显示所有可能用户(T1)的用户级别,其中值存储在另一个表格(T3)中,如:

  

UserID,Page,Level(R,E,W,A,O)   (读取,编辑,写入,助手,所有者)

但我无法理解如何动态获取列,然后将其称为LAST(col1) 任何正确方向的提示都将受到赞赏。

我知道如何在php中的许多foreach循环中完成它,但我相信它应该可以在MySql中使用?..

表格如下:

表1;用户

ID | Name
------------------
1  | James
------------------
2  | John
------------------
3  | Peter
------------------

表2;页

ID | PageName
------------------
1  | Home
------------------
2  | Members
------------------
3  | Courses
------------------
4  | Lybrary
------------------
5  | StrangePage
------------------
6  | Unused Page
------------------

表3; UserLevels

ID | User       | Page      | Lev
---------------------------------------
1  | James      | Home      | W
---------------------------------------
2  | James      | Members   | R
---------------------------------------
3  | James      | Lybrary   | O
---------------------------------------
4  | John       | Home      | R
---------------------------------------
5  | Peter      | Home      | O
---------------------------------------
6  | Peter      | Courses   | A
---------------------------------------

预期输出将包含所有用户作为行,所有页面作为列,所有权限(如果可用)作为结果:

User  | Home | Members | Courses | Lybrary | StrangePage | Unused Page
-----------------------------------------------------------------------
James | W    | R       |         |         |             |
-----------------------------------------------------------------------
John  | R    |         |         |         |             | 
-----------------------------------------------------------------------
Peter | O    |         | A       |         |             |
-----------------------------------------------------------------------

0 个答案:

没有答案