2012-02-15 85 views
0

MVC模式,PHP,Mysql的MySQL查询的管理员级别的访问权限

表:

联系 ID |用户|通过

模块 Id |名称(例如用户,管理员,图库)

权限 Id |名称(例如添加,删除,读取,更新)

级别 Id |模块(例如图库)| Cod_Permission(例如10)|管理员(前user123)

所以的AI查询:

 
SELECT 
       n.Modulo, 
       p.Nome AS Tipo, 
       n.Administrador AS Nome, 
       n.Cod_Permissao 
       FROM 
       niveis AS n 
       Inner Join modulos AS m ON n.Modulo = m.Nome 
       Inner Join permissoes AS p ON n.Cod_Permissao = p.Codigo 
       WHERE 
       n.Administrador = 'user123' 

返回:

 
Id -> Module -> Cod_Permission -> Administator 
1 gallery   1    user123 
2 gallery   2    user123 

我想组中的所有结果在同一模块中这样一行

 
Id -> Module -> Read -> Update -> Delete -> Insert -> Username 
1 gallery  1  0  0   4  user123 

如何做到这一点?

回答

0

事情是这样的 -

SELECT 
    n.Modulo, 
    p.Nome AS Tipo, 
    n.Administrador AS Nome, 
    SUM(IF(n.Cod_Permissao = 1, 1, 0)) AS Read, 
    SUM(IF(n.Cod_Permissao = 2, 1, 0)) AS Update, 
    SUM(IF(n.Cod_Permissao = 3, 1, 0)) AS Delete, 
    SUM(IF(n.Cod_Permissao = 4, 1, 0)) AS Insert 
FROM niveis AS n 
INNER JOIN modulos AS m 
    ON n.Modulo = m.Nome 
INNER JOIN permissoes AS p 
    ON n.Cod_Permissao = p.Codigo 
WHERE n.Administrador = 'user123' 
GROUP BY 
    n.Modulo, 
    p.Nome, 
    n.Administrador 

没有确切知道什么是不同的字段我不能100%肯定,但是这应该让你在正确的方向前进。

+0

完美解决方案只能在组中删除p.Nome BY感谢伙计! – user1149440 2012-02-16 18:41:15

0

nnichols nice dudeeee!

SOLUTION: 相同的查询你的,只有改变:

 
GROUP BY 
    n.Modulo, 
    p.Nome, 
    n.Administrador 

 
GROUP BY 
    n.Modulo, 
    n.Administrador 
 
SELECT 
    n.Modulo, 
    p.Nome AS Tipo, 
    n.Administrador AS Nome, 
    SUM(IF(n.Cod_Permissao = 1, 1, 0)) AS Ler, 
    SUM(IF(n.Cod_Permissao = 2, 2, 0)) AS Atualizar, 
    SUM(IF(n.Cod_Permissao = 3, 3, 0)) AS Excluir, 
    SUM(IF(n.Cod_Permissao = 4, 4, 0)) AS Inserir 
FROM niveis AS n 
INNER JOIN modulos AS m 
    ON n.Modulo = m.Nome 
INNER JOIN permissoes AS p 
    ON n.Cod_Permissao = p.Codigo 
WHERE n.Administrador = 'kin' 
GROUP BY 
    n.Modulo, 
    n.Administrador