Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Jairovisk

[Resolvido] Relacionar permissões

Recommended Posts

Bom dia, montei um select para pesquisar quais funções estão relacionadas a cada permissão, mas, o resultado não esta trazendo apenas um sistema, e também esta gerando duplicidade nas informações.

Alguém pode me auxiliar.

Tenho de montar uma planilha em excel para apresentar ao gestores de cada área, como estõpa relacionados os usuários a cada permissão, e como estão relacionadas cada função e esta permissão.

Exemplo:

 

Select A.Cd_Sistema Cod_Sistema,
A.Ds_Sistema Nome_Sistema,
B.Cd_Funcao Cod_Função,
B.Ds_Funcao Descrição_Da_Função,
C.Id_Permissao Permissao_C,
D.Id_Permissao Permissao_D/*,
E.Id_Permissao Permissao_E,
F.id_permissao Permissao_F*/
From Tgesist A,
Tgefuncao B,
Tcapermissao C,
Tcapermissao D/*,
Tcapermissao E,
Tcapermissao F*/
Where A.Cd_Sistema = B.Cd_Sistema
And A.Cd_Sistema = C.Cd_Sistema
And A.Cd_Sistema = D.Cd_Sistema
And C.Id_Permissao = 1 Or D.Id_Permissao = 2 /* Or E.Id_Permissao = 3 Or f.id_permissao = 4*/
And A.Cd_Sistema = 'ACL'
Order By A.Cd_Sistema, B.Ds_Funcao;

 

Deveria retornar na coluna PERMISSAO_C o número "1" para todas as funções a C.ID_PERMISSAO = 1, quando não existir retornar nulo; e assim por diante.

ACL	ACOMPANHAMENTO DE LIMITES	ACLI  	CLIENTE        	1	1
ACL	ACOMPANHAMENTO DE LIMITES	ACBO  	LIMITE -> BOVESPA	1	1
ACL	ACOMPANHAMENTO DE LIMITES	ACCC  	LIMITE -> BOVESPA -> CADASTRO	1	1
ACL	ACOMPANHAMENTO DE LIMITES	ACNA  	LIMITE -> BOVESPA -> CONSULTA	1	1
ACL	ACOMPANHAMENTO DE LIMITES	ACGA  	LIMITE -> BOVESPA -> GRAFICO	1	1
ACL	ACOMPANHAMENTO DE LIMITES	ACLE  	MENU ACOMPANHAMENTO DE LIMITES	1	1
ACL	ACOMPANHAMENTO DE LIMITES	ACAN  	MENU ANALISE	1	1
ACL	ACOMPANHAMENTO DE LIMITES	ACCA  	MENU CADASTROS	1	1
ACL	ACOMPANHAMENTO DE LIMITES	ACCR  	MENU LIMITE DE CREDITO	1	1
ACL	ACOMPANHAMENTO DE LIMITES	ACPA  	PARAMETROS	1	1
BMF	BMF	ABEMO 	ACERTO BASE EMOLUMENTO	1	1
BMF	BMF	ABEMO 	ACERTO BASE EMOLUMENTO	1	2
BMF	BMF	ABEML 	ACERTO BASE EMOLUMENTO LIQ.	1	2
BMF	BMF	ABEML 	ACERTO BASE EMOLUMENTO LIQ.	1	1
BMF	BMF	ACORN 	ACERTO DE CORRETAGEM CLEARING-EXECUTION	1	2
BMF	BMF	ACORN 	ACERTO DE CORRETAGEM CLEARING-EXECUTION	1	1
BMF	BMF	ACOR  	ALTERAÇÃO DA CORRETAGEM	1	1
BMF	BMF	ACOR  	ALTERAÇÃO DA CORRETAGEM	1	2
BMF	BMF	ATOT  	ALTERAÇÃO TOTAL DO CLIENTE	1	2
BMF	BMF	ATOT  	ALTERAÇÃO TOTAL DO CLIENTE	1	1
BMF	BMF	MCLIE 	CADASTRO - CLIENTE	1	1
BMF	BMF	MCLIE 	CADASTRO - CLIENTE	1	2
BMF	BMF	MCORR 	CADASTRO - CORRESPONDENTE	1	2
BMF	BMF	MCORR 	CADASTRO - CORRESPONDENTE	1	1
BMF	BMF	MAPE  	CADASTRO CLIENTE APELIDO	1	2
BMF	BMF	MAPE  	CADASTRO CLIENTE APELIDO	1	1
BMF	BMF	MLCE  	CADASTRO CORRETAGEM CLEARING-EXECUTION	1	1
BMF	BMF	MLCE  	CADASTRO CORRETAGEM CLEARING-EXECUTION	1	2
BMF	BMF	MTXCOT	CADASTRO COTAÇÕES	1	2
BMF	BMF	MTXCOT	CADASTRO COTAÇÕES	1	1
BMF	BMF	CACS  	CADASTRO DE ACERTO CORRETAGEM POR SERIE	1	2
BMF	BMF	CACS  	CADASTRO DE ACERTO CORRETAGEM POR SERIE	1	1
BMF	BMF	CAAG  	CADASTRO DE AGENTES	1	2
BMF	BMF	CAAG  	CADASTRO DE AGENTES	1	1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Creio que falte um outer join ( (+) ), tente :

 

Select A.Cd_Sistema Cod_Sistema,
A.Ds_Sistema Nome_Sistema,
B.Cd_Funcao Cod_Função,
B.Ds_Funcao Descrição_Da_Função,
C.Id_Permissao Permissao_C,
D.Id_Permissao Permissao_D
From Tgesist A,
Tgefuncao B,
Tcapermissao C,
Tcapermissao D/*,
Tcapermissao E,
Tcapermissao F*/
Where A.Cd_Sistema = B.Cd_Sistema
And A.Cd_Sistema = C.Cd_Sistema (+)
And A.Cd_Sistema = D.Cd_Sistema (+)
And (nvl(C.Id_Permissao,1) = 1 Or nvl(D.Id_Permissao,2) = 2) 
And A.Cd_Sistema = 'ACL'
Order By A.Cd_Sistema, B.Ds_Funcao;

 

Esta linha

.. And (nvl(C.Id_Permissao,1) = 1 Or nvl(D.Id_Permissao,2) = 2) ...

talvez deva ter outro tratamento.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Motta; grato pelo retorno;

 

agora só falta determinar que na coluna C.Id_Permissao apresente apenas a permissão = 1, e na D.Id_Permissao apenas a permissão 2; caso contrário retorne como nulo.

É possível?

Caso precise te passo a descrição das colunas das tabelas.

 

este é parte do resultado que retornou.

 

COD_SISTEMA  NOME_SISTEMA   COD_FUNÇÃO   DESCRIÇÃO_DA_FUNÇÃO                                   PERMISSAO_C  PERMISSAO_D
CTB          Contabilidade  ACCO         ALTERAÇAO ATIVIDADE DE CONTA CORRENTE                             1            2
CTB          Contabilidade  ACCO         ALTERAÇAO ATIVIDADE DE CONTA CORRENTE                             1            3
CTB          Contabilidade  ACCO         ALTERAÇAO ATIVIDADE DE CONTA CORRENTE                             2            2
CTB          Contabilidade  ACCO         ALTERAÇAO ATIVIDADE DE CONTA CORRENTE                             3            2
CTB          Contabilidade  ACCO         ALTERAÇAO ATIVIDADE DE CONTA CORRENTE                             1            1
CTB          Contabilidade  ARCO         ATUALIZAÇÃO DE RELACIONAMENTO CONEF                               1            2
CTB          Contabilidade  ARCO         ATUALIZAÇÃO DE RELACIONAMENTO CONEF                               1            3
CTB          Contabilidade  ARCO         ATUALIZAÇÃO DE RELACIONAMENTO CONEF                               2            2
CTB          Contabilidade  ARCO         ATUALIZAÇÃO DE RELACIONAMENTO CONEF                               3            2
CTB          Contabilidade  ARCO         ATUALIZAÇÃO DE RELACIONAMENTO CONEF                               1            1
CTB          Contabilidade  EBDE         BALANÇO - DESFAZER                                                1            2
CTB          Contabilidade  EBDE         BALANÇO - DESFAZER                                                1            3
CTB          Contabilidade  EBDE         BALANÇO - DESFAZER                                                2            2
CTB          Contabilidade  EBDE         BALANÇO - DESFAZER                                                3            2
CTB          Contabilidade  EBDE         BALANÇO - DESFAZER                                                1            1
CTB          Contabilidade  EBEN         BALANÇO - ENCERRAMENTO                                            1            2
CTB          Contabilidade  EBEN         BALANÇO - ENCERRAMENTO                                            1            3
CTB          Contabilidade  EBEN         BALANÇO - ENCERRAMENTO                                            2            2
CTB          Contabilidade  EBEN         BALANÇO - ENCERRAMENTO                                            3            2
CTB          Contabilidade  EBEN         BALANÇO - ENCERRAMENTO                                            1            1
CTB          Contabilidade  CCON         CONSOLIDAÇÃO                                                      3            2
CTB          Contabilidade  CCON         CONSOLIDAÇÃO                                                      2            2
CTB          Contabilidade  CCON         CONSOLIDAÇÃO                                                      1            3
CTB          Contabilidade  CCON         CONSOLIDAÇÃO                                                      1            2
CTB          Contabilidade  CCON         CONSOLIDAÇÃO                                                      1            1
CTB          Contabilidade  MCON         CONSOLIDADO                                                       3            2
CTB          Contabilidade  MCON         CONSOLIDADO                                                       2            2
CTB          Contabilidade  MCON         CONSOLIDADO                                                       1            3
CTB          Contabilidade  MCON         CONSOLIDADO                                                       1            2
CTB          Contabilidade  MCON         CONSOLIDADO                                                       1            1
CTB          Contabilidade  CVCO         CONSOLIDADO - CONTAS                                              1            1
CTB          Contabilidade  CVCO         CONSOLIDADO - CONTAS                                              3            2
CTB          Contabilidade  CVCO         CONSOLIDADO - CONTAS                                              2            2
CTB          Contabilidade  CVCO         CONSOLIDADO - CONTAS                                              1            2
CTB          Contabilidade  CVCO         CONSOLIDADO - CONTAS                                              1            3
CTB          Contabilidade  CVEM         CONSOLIDADO - EMPRESAS                                            3            2

 

Exemplo:

 

COD_SISTEMA  NOME_SISTEMA   COD_FUNÇÃO   DESCRIÇÃO_DA_FUNÇÃO                                   PERMISSAO_C  PERMISSAO_D
CTB          Contabilidade  ACCO         ALTERAÇAO ATIVIDADE DE CONTA CORRENTE                             1            2
CTB          Contabilidade  ACCO         ALTERAÇAO ATIVIDADE DE CONTA CORRENTE                             1        null
CTB          Contabilidade  ACCO         ALTERAÇAO ATIVIDADE DE CONTA CORRENTE                             1        null
CTB          Contabilidade  ARCO         ATUALIZAÇÃO DE RELACIONAMENTO CONEF                               1            2
CTB          Contabilidade  ARCO         ATUALIZAÇÃO DE RELACIONAMENTO CONEF                               1        null
CTB          Contabilidade  ARCO         ATUALIZAÇÃO DE RELACIONAMENTO CONEF                               1        null
CTB          Contabilidade  EBDE         BALANÇO - DESFAZER                                                1            2
CTB          Contabilidade  EBDE         BALANÇO - DESFAZER                                                1        null
CTB          Contabilidade  EBDE         BALANÇO - DESFAZER                                                1        null
CTB          Contabilidade  EBEN         BALANÇO - ENCERRAMENTO                                            1            2
CTB          Contabilidade  EBEN         BALANÇO - ENCERRAMENTO                                            1        null
CTB          Contabilidade  EBEN         BALANÇO - ENCERRAMENTO                                            1        null
CTB          Contabilidade  CCON         CONSOLIDAÇÃO                                                      1        null
CTB          Contabilidade  CCON         CONSOLIDAÇÃO                                                      1            2
CTB          Contabilidade  CCON         CONSOLIDAÇÃO                                                      1        null
CTB          Contabilidade  MCON         CONSOLIDADO                                                       1        null
CTB          Contabilidade  MCON         CONSOLIDADO                                                       1            2
CTB          Contabilidade  MCON         CONSOLIDADO                                                       1        null
CTB          Contabilidade  CVCO         CONSOLIDADO - CONTAS                                              1        null
CTB          Contabilidade  CVCO         CONSOLIDADO - CONTAS                                              1            2
CTB          Contabilidade  CVCO         CONSOLIDADO - CONTAS                                              1        null
CTB          Contabilidade  CVEM         CONSOLIDADO - EMPRESAS                                            1        null
CTB          Contabilidade  CVEM         CONSOLIDADO - EMPRESAS                                            1            2
CTB          Contabilidade  CVEM         CONSOLIDADO - EMPRESAS                                            1        null
CTB          Contabilidade  CVAL         CONSOLIDADO - VALIDAÇÕES                                          1            2
CTB          Contabilidade  CVAL         CONSOLIDADO - VALIDAÇÕES                                          1        null
CTB          Contabilidade  CVAL         CONSOLIDADO - VALIDAÇÕES                                          1        null
CTB          Contabilidade  CCCO         CONSULTA ATIVIDADE DE CONTA CORRENTE                              1            2
CTB          Contabilidade  CCCO         CONSULTA ATIVIDADE DE CONTA CORRENTE                              1        null
CTB          Contabilidade  CCCO         CONSULTA ATIVIDADE DE CONTA CORRENTE                              1        null
CTB          Contabilidade  CELI         ELIMINAÇÃO                                                        1            2
CTB          Contabilidade  CELI         ELIMINAÇÃO                                                        1        null
CTB          Contabilidade  CELI         ELIMINAÇÃO                                                        1        null
CTB          Contabilidade  MENC         ENCERRAMENTO                                                      1            2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como eu disse

 

troque

... And (nvl(C.Id_Permissao,1) = 1 Or nvl(D.Id_Permissao,2) = 2) ...

 

por

... And (C.Id_Permissao = 1 Or D.Id_Permissao = 2) ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Motta;

 

ainda esta retornando isto:

 

COD_SISTEMA NOME_SISTEMA COD_FUNÇÃO DESCRIÇÃO_DA_FUNÇÃO PERMISSAO_C PERMISSAO_D

CTB Contabilidade ACCO ALTERAÇAO ATIVIDADE DE CONTA CORRENTE 1 1

CTB Contabilidade ACCO ALTERAÇAO ATIVIDADE DE CONTA CORRENTE 1 2

CTB Contabilidade ACCO ALTERAÇAO ATIVIDADE DE CONTA CORRENTE 1 3

CTB Contabilidade ACCO ALTERAÇAO ATIVIDADE DE CONTA CORRENTE 2 2

CTB Contabilidade ACCO ALTERAÇAO ATIVIDADE DE CONTA CORRENTE 3 2

 

a intenção é que retorne algo neste estilo;

 

COD_SISTEMA NOME_SISTEMA COD_FUNÇÃO DESCRIÇÃO_DA_FUNÇÃO PERMISSAO_C PERMISSAO_D

CTB Contabilidade ACCO ALTERAÇAO ATIVIDADE DE CONTA CORRENTE 1 2

CTB Contabilidade ARCO ATUALIZAÇÃO DE RELACIONAMENTO CONEF 1 2

CTB Contabilidade EBDE BALANÇO - DESFAZER 1 2

 

Apenas um linha com a função(COD_FUNÇÃO) e varias colunas com as permissões (PERMISSAO_C, PERMISSAO_D)

e assim por diante; como existem outros sistemas com mais de 6 permissões; terei de abrir novas colunas como no select inicial que estão momentadas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei se entendi bem mas talvez o CASE ajude.

 

Select A.Cd_Sistema Cod_Sistema,
A.Ds_Sistema Nome_Sistema,
B.Cd_Funcao Cod_Função,
B.Ds_Funcao Descrição_Da_Função,
(CASE WHEN C.Id_Permissao  = 1 THEN 'X' ELSE ' ' END) PERM1, 
(CASE WHEN C.Id_Permissao  = 2 THEN 'X' ELSE ' ' END) PERM2
From Tgesist A,
Tgefuncao B,
Tcapermissao C
Where A.Cd_Sistema = B.Cd_Sistema
And A.Cd_Sistema = C.Cd_Sistema (+)	
And A.Cd_Sistema = 'ACL'
Order By A.Cd_Sistema, B.Ds_Funcao;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ficou legal, só falta truncar a coluna COD_FUNÇÃO para aparecer apenas uma linha.

 

COD_SISTEMA  NOME_SISTEMA        COD_FUNÇÃO   DESCRIÇÃO_DA_FUNÇÃO                              PERM1 PERM2 PERM3 PERM4
CCO          CONTAS CORRENTES    CPFT         ACESSO A TELA - CPMF TRIMESTRAL                              X
CCO          CONTAS CORRENTES    CPFT         ACESSO A TELA - CPMF TRIMESTRAL                                    X
CCO          CONTAS CORRENTES    CPFT         ACESSO A TELA - CPMF TRIMESTRAL                  X
CCO          CONTAS CORRENTES    CPFT         ACESSO A TELA - CPMF TRIMESTRAL                        X
CCO          CONTAS CORRENTES    GACT         ACESSO A TELA - Gerar Arquivo de CPMF Trimestral X
CCO          CONTAS CORRENTES    GACT         ACESSO A TELA - Gerar Arquivo de CPMF Trimestral                   X
CCO          CONTAS CORRENTES    GACT         ACESSO A TELA - Gerar Arquivo de CPMF Trimestral       X
CCO          CONTAS CORRENTES    GACT         ACESSO A TELA - Gerar Arquivo de CPMF Trimestral             X

 

Graças a você estou conhecendo nopvos comandos de SQL.

 

Na minha resposta ficou desposicionado, mas na query o "X" ficam posicionados debaixo de cada coluna respectivamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

De novo não sei se é isto mas ...

B.Cd_Funcao||' '||B.Ds_Funcao Descrição_Da_Função,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe se não estou explicando direito, mas é algo assim.

As funções em apenas uma linha e as permissões na sequência.

 

COD_SISTEMA NOME_SISTEMA COD_FUNÇÃO DESCRIÇÃO_DA_FUNÇÃO PERM1 PERM2 PERM3 PERM4

CCO CONTAS CORRENTES CPFT ACESSO A TELA - CPMF TRIMESTRAL X X X

CCO CONTAS CORRENTES GACT ACESSO A TELA - Gerar Arquivo de CPMF Trimestral X X X

CCO CONTAS CORRENTES ACCO ALTERAÇÃO DE CLIENTE ATIV. CONTA CORR. X X X X

CCO CONTAS CORRENTES AIMF ALTERAÇÃO DE IMF X X X

CCO CONTAS CORRENTES AGRC ALTERAÇÃO GRUPO DE COMPENSAÇÃO X X

 

Como posso anexar o arquivo para melhorar a sua visualização?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Te passei uma MP com meu email.

--

saquei

tenta :

 

Select A.Cd_Sistema Cod_Sistema,
A.Ds_Sistema Nome_Sistema,
B.Cd_Funcao Cod_Função,
B.Ds_Funcao Descrição_Da_Função,
decode(sum(CASE WHEN C.Id_Permissao  = 1 THEN 1 ELSE 0 END),0,' ','x') PERM1, 
decode(sum(CASE WHEN C.Id_Permissao  = 2 THEN 1 ELSE 0 END),0,' ','x') PERM2
From Tgesist A,
Tgefuncao B,
Tcapermissao C
Where A.Cd_Sistema = B.Cd_Sistema
And A.Cd_Sistema = C.Cd_Sistema (+)     
And A.Cd_Sistema = 'ACL'
group by  A.Cd_Sistema Cod_Sistema,
A.Ds_Sistema ,
B.Cd_Funcao ,
B.Ds_Funcao
Order By A.Cd_Sistema, B.Ds_Funcao;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Motta, bom dia;

 

Deu trabalho, mas, consegui desta maneira.

 

Select A.Cd_Sistema As Cod_Sistema, 
A.Ds_Sistema As Nome_Sistema, 
B.Cd_Funcao As Cod_Função, 
B.Nm_Funcao Nome_Função,
D1.Nm_Permissao  As Perm1,
D2.Nm_Permissao  As Perm2,  
D3.Nm_Permissao  As Perm3,  
D4.Nm_Permissao  As Perm4,  
D5.Nm_Permissao  As Perm5,  
d6.nm_Permissao  As Perm6 

From Tgesist A 
Inner Join Tgefuncao B
 On A.Cd_Sistema = B.Cd_Sistema     
  Left Join Tcaperfun C1
   On B.Cd_Sistema = C1.Cd_Sistema
    And B.Cd_Funcao = C1.Cd_Funcao
    And C1.Id_Permissao = 1 And
    C1.Cd_Sistema is not null
  Left Join Tcapermissao D1
   On C1.Cd_Sistema = D1.Cd_Sistema
    and c1.id_permissao = d1.id_permissao 
  Left Join Tcaperfun C2
   On B.Cd_Sistema = C2.Cd_Sistema
    And B.Cd_Funcao = C2.Cd_Funcao
    And C2.Id_Permissao = 2
    And C2.Cd_Sistema is not null
  Left Join Tcapermissao D2
   On C2.Cd_Sistema = D2.Cd_Sistema
    and c2.id_permissao = d2.id_permissao
  Left Join Tcaperfun C3
   On B.Cd_Sistema = C3.Cd_Sistema
    And B.Cd_Funcao = C3.Cd_Funcao
    And C3.Id_Permissao = 3
    And C3.Cd_Sistema is not null
  Left Join Tcapermissao D3
   On C3.Cd_Sistema = D3.Cd_Sistema
    and c3.id_permissao = d3.id_permissao
  Left Join Tcaperfun C4
   On B.Cd_Sistema = C4.Cd_Sistema
    And B.Cd_Funcao = C4.Cd_Funcao
    And C4.Id_Permissao = 4
    And C4.Cd_Sistema is not null
  Left Join Tcapermissao D4
   On C4.Cd_Sistema = D4.Cd_Sistema
    and c4.id_permissao = d4.id_permissao
  Left Join Tcaperfun C5
   On B.Cd_Sistema = C5.Cd_Sistema
    And B.Cd_Funcao = C5.Cd_Funcao
    And C5.Id_Permissao = 5
    And C5.Cd_Sistema is not null
  Left Join Tcapermissao D5
   On C5.Cd_Sistema = D5.Cd_Sistema
    and c5.id_permissao = d5.id_permissao
 Left Join Tcaperfun C6
  On B.Cd_Sistema = C6.Cd_Sistema
   And B.Cd_Funcao = C6.Cd_Funcao
   And C6.Id_Permissao = 6
   And C6.Cd_Sistema Is Not Null        
 Left Join Tcapermissao D6
  On C6.Cd_Sistema = D6.Cd_Sistema
   And C6.Id_Permissao = D6.Id_Permissao
Where  A.Cd_Sistema Is Not Null 
Order By A.Cd_Sistema, B.Ds_Funcao;

 

Mas, mesmo assim valeu pela força.

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.