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
Responder
wallyson03
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 1
Registrado em: Seg, 06 Mai 2019 9:59 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:

Selecionar tudo

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_padrão, '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_padrão, '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
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

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

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. :-/
DanielNN
Moderador
Moderador
Mensagens: 641
Registrado em: Seg, 03 Set 2007 3:26 pm
Localização: Fortaleza - CE
att,

Daniel N.N.

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:

Selecionar tudo

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)
Responder
  • Informação
  • Quem está online

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