2012-02-15 48 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