Запрос на доступ к уровням администратора - PullRequest
0 голосов
/ 16 февраля 2012

Таблица:

Admin
Id | User | Pass

Modules
Id | Name (ex. users, admin, gallery )

Permissions
Id | Name (ex. add, delete, read, update)

Levels
Id | Module (ex. gallery) | Cod_Permission (ex. 10) | Administrator (ex. user123)

Итак, у меня есть запрос:

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'

Return:

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

Как это сделать?

Ответы [ 2 ]

0 голосов
/ 16 февраля 2012

nnichols хороший чувееее!

РЕШЕНИЕ: тот же запрос ваш, только изменение:

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
0 голосов
/ 16 февраля 2012

Как то так -

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%, но это должно заставить вас двигаться в правильном направлении.

...