Consulta que retorna usuários com certificado A3 e A1

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
  

Mensagemem Qua, 12 Jun 2019 10:15 am

Prezados,

bom dia.

Fiz uma consulta onde retorna usuário que possuem certificados A1 e A3.

a via de manipulação.

Alguém poderia dar uma luz como eu posso retornar usuários em que não tem nem certificado A1 e nem A3.

consulta:

Código: Selecionar todos
select 'A3' cert,
       f.cd_filial,
       f.nm_fantasia Filial,
       s.cd_setor,
       s.nm_setor,
       o.nm_operador cod_usuario,
       o.ds_operador nome_usuario,
       o.nu_matricula,
       c.user_id,
       op.nu_dias_bloqueio,
       o.dt_cadastro_certificado,
       p.cd_papel,
       p.nm_papel,
       decode(nvl(po.fl_padrao, 'N'), 'S', 'Padrão', ' ') padrão
       ,trunc(u.ult_acesso) dt_ult_acesso
       ,fn_dt_valida(substr(c.user_id, length(c.user_id) - 10, 10)) as dt_vencimento
  from vw_filial          f,
       tm_setor           s,
       tb_papel           p,
       tb_papel_operador  po,
       tb_operador        o,
       tb_operador_parametros op,
       tb_acesso_empresa  e,
       adm.tb_certificado c
       ,tb_controle_usuarios u
where c.nm_operador = o.nm_operador
   and c.nm_operador = e.nm_operador
   and op.nm_operador(+) = o.nm_operador
   and u.cod_usuario(+) = o.nm_operador
   and f.cd_filial = e.cd_filial
   and o.cd_setor = s.cd_setor
   and f.cd_filial = s.cd_setor_emp
   and po.nm_operador(+) = o.nm_operador
   and p.cd_papel(+) = po.cd_papel
   and regexp_like(substr(c.user_id,length(c.user_id)-10,10),'[/]{1}')
union all
select 'A1' cert,
       f.cd_filial,
       f.nm_fantasia Filial,
       s.cd_setor,
       s.nm_setor,
       o.nm_operador cod_usuario,
       o.ds_operador nome_usuario,
       o.nu_matricula,
       k.ds_alias,
       op.nu_dias_bloqueio,
       o.dt_cadastro_certificado,
       p.cd_papel,
       p.nm_papel,
       decode(nvl(po.fl_padrao, 'N'), 'S', 'Padrão', ' ') padrão
       ,trunc(u.ult_acesso) dt_ult_acesso
       ,NULL
  from vw_filial          f,
       tm_setor           s,
       tb_papel           p,
       tb_papel_operador  po,
       tb_operador        o,
       tb_operador_parametros op,
       tb_acesso_empresa  e,
       tb_sign_key        k
       ,tb_controle_usuarios u
where k.nm_operador = o.nm_operador
   and k.nm_operador = e.nm_operador
   and op.nm_operador(+) = o.nm_operador
   and u.cod_usuario(+) = o.nm_operador
   and f.cd_filial = e.cd_filial
   and o.cd_setor = s.cd_setor
   and f.cd_filial = s.cd_setor_emp
   and po.nm_operador(+) = o.nm_operador
   and p.cd_papel(+) = po.cd_papel
wallyson03

Mensagemem Qui, 13 Jun 2019 1:17 pm

To tentando entender na clausula WHERE aonde que diz que o usuário tem a certificação A1 ou A3...
Eu só vi um monte de join nas tabelas. :-/
dr_gori
Localização: Portland, OR USA

Thomas F. G

Você já respondeu a dúvida de alguém hoje?
http://glufke.net/oracle/search.php?search_id=unanswered

Mensagemem Seg, 15 Jul 2019 3:34 pm

Olá,

É difícil entender a condição de forma mais precisa. Mas em regra geral você fez uma consulta para os certificados A1 e outra para os certificados A3.
Baseando nessa tua solução de identificar esses tipos , para pegar os outros seria algo como:

Código: Selecionar todos
SELECT ...
   FROM TABELAS T
WHERE "CONDIÇÕES"
     AND NOT EXISTS (SELECT 1
                                  FROM CONSULTA_A1 A1
                                WHERE A1.CAMPOS = TABELAS.CAMPOS)
     AND NOT EXISTS (SELECT 1
                                  FROM CONSULTA_A3 A3
                                WHERE A3.CAMPOS = TABELAS.CAMPOS)
DanielNN
Localização: Fortaleza - CE

att,

Daniel N.N.



Voltar para PL/SQL

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 6 visitantes