Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Fala galera, no momento estou com uma dúvida.
Estou fazendo N relacionamentos, e em determinado momento utilizei o CROSS JOIN, mas não sei se da maneira que estou utilizando está correta. Criei uma VIEW para relacionar a tabela paginas_acesso, processo_pagina_acesso, processos, processo_grupo e tbl_grupo_acesso, e que seja exibido somente o que não foi bloqueado (dt_bloqueio = '0000-00-00 00:00:00', ou seja, campo NOT NULL):
view_menu_acesso:CREATE OR REPLACE
ALGORITHM = UNDEFINED
DEFINER = root@%
SQL SECURITY INVOKER
VIEW view_menu_acesso AS
SELECT
pa.id AS id_pagina,
pa.descricao AS descricao_pagina,
pa.endereco AS endereco,
pa.pagina_restrita AS pagina_restrita,
pa.item_menu_pai AS item_pai,
pa.posicao_menu AS posicao_menu,
pa.dt_cadastro AS pg_restrita_desde,
IF(g.id IS NOT NULL OR pa.pagina_restrita = 0, 1, NULL) AS permissao,
ppa.dt_cadastro AS pg_autorizada_desde,
p.id AS id_processo,
p.descricao AS nome_processo,
p.dt_criacao AS processo_desde,
p.link_cad_usuarios AS link_cadastro_usuarios,
g.id AS id_grupo,
g.descricao AS nome_grupo,
pg.dt_cadastro AS grupo_desdeDepois disso, fiz um SELECT com um CROSS JOIN para relacionar a tabela `usuarios_grupo` ás páginas restritas, depois disso fiz um INNER JOIN para consultar o id do usuário, e assim saber se o usuário X tem acesso á página Y:
SELECT
v.id_pagina,
v.descricao_pagina,
v.endereco,
v.pagina_restrita,
v.item_pai,
v.posicao_menu,
v.pg_restrita_desde,
v.permissao,
IF( SUM( v.permissao ) >= 1, 1, 0) permissao,
v.pg_autorizada_desde,
v.id_processo,
v.nome_processo,
v.processo_desde,
v.link_cadastro_usuarios,
v.id_grupo,
v.nome_grupo,
v.grupo_desde AS perfil_desde,
ug.dt_criacao AS perfil_usuario_desde,
tu.id AS id_usuario
FROM
view_menu_acesso v
CROSS JOIN usuarios_grupo ug
INNER JOIN tbl_usuarios tu
ON tu.id = ug.id_usuario
WHERE 1
AND ug.dt_bloqueio = '0000-00-00 00:00:00'
AND tu.id = 102 # meu id
GROUP BY id_pagina
ORDER BY
v.item_pai ASC,
v.posicao_menu ASC
Desde já, muito obrigado pessoal.
Carregando comentários...