Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia!
Estou fazendo um select em uma tabela de cupom fiscal e preciso que me mostre o operador do caixa e o supervisor que liberou a venda, que no caso é convênio.
A consulta que montei é a seguinte:
select c.m00ad as CUPOM,
c.m00ac as PDV,
c.m02ak as VALOR,
p.descricao as FINALIZADORA,
c.m02ah as OPERADOR,
f.nome as NOME_OP,
c.m02ao as SUPERVISOR,
f.nome as NOME_SUP
from zan_m02 c inner join tab_funcionario f
on c.m02ao = f.cod_funcionario
inner join tab_finalizadora p
on c.m02ai = p.cod_finalizadora
where c.m00af = to_date('09/03/20','dd/mm/yy')
and c.m00za = 3
and c.m00ac = 9
and c.m00ad = 379678
group by c.m00ad,c.m00ac,c.m02ak,p.descricao,c.m02ah,f.nome,c.m02ao;
A consulta me retorna o seguinte resultado:

Como podem ver, repetiu o mesmo nome (operador e supervisor), sendo que o código é diferente.
Isso acontece por que na tabela de funcionário o campo NOME serve para operador e supervisor e o que diferencia se é supervisor ou operador temos mais duas outras tabelas. A estrutura é assim:
tab_funcionario -> temos o campo cod_funcionario e nome (todos os funcionários cadastrados são armazenados nessa tabela)
tab_perfil -> temos os campos cod_perfil e descricao (todos os perfis cadastrados são armazenados nessa tabela)
tab_perfil_funcionario -> temos os campos cod_funcionario e cod_perfil (tabela que relaciona as tabelas tab_funcionario e tab_perfil)
A única coisa que preciso é que apareça no NOME_OP o nome do operador e não o nome do supervisor igual está aparecendo.>
Em 28/03/2020 at 12:18, Motta disse:
zan_m02.m02ao sinaliza o funcionário , pelo que entendi , o que sinaliza o suprevisor.
Não seria o caso de instanciar duas vezes tab_funcionario ?
Olá Motta! Tudo bom?
Eu mudei o script mas ainda assim não resolveu, me trouxe o mesmo resultado.
select c.m00ad as CUPOM,
c.m00ac as PDV,
c.m02ak as VALOR,
p.descricao as FINALIZADORA,
c.m02ah as OPERADOR,
** f_op.nome as NOME_OP,**
c.m02ao as SUPERVISOR,
f.nome as NOME_SUP
from zan_m02 c inner join tab_funcionario f
on c.m02ao = f.cod_funcionario
inner join tab_funcionario f_op
on c.m02ao = f_op.cod_funcionario
inner join tab_finalizadora p
on c.m02ai = p.cod_finalizadora
where c.m00af = to_date('09/03/20','dd/mm/yy')
and c.m00za = 3
and c.m00ac = 9
and c.m00ad = 379678
group by c.m00ad,c.m00ac,c.m02ak,p.descricao,c.m02ah,c.m02ao,f.nome;

O NOME_OP deveria seri Miran e o NOME_SUP é a Tania.
o que sinaliza o supervisor ?
>
4 horas atrás, Motta disse:
o que sinaliza o supervisor ?
São outras duas tabelas.
Tem a tabela tab_perfil, que são cadastrados todos os perfis do sistema, operador, supervisor, gerente, etc. E tem outra tabela, tab_perfil_funcionario, essa tabela relaciona o código do operador com o código do perfil.
o que sinaliza o supervisor ?
Ou seja como eu sei que Jair é supervisor do Guedes ?!
>
5 minutos atrás, Motta disse:
o que sinaliza o supervisor ?
Ou seja como eu sei que Jair é supervisor do Guedes ?!
Na estrutura do banco está assim:
tab_funcionario
tab_perfil
tab_perfil_funcionario
nessa tabela, indica que o funcionário com código 9898(Tania), ela é supervisora, mas também é operadora.
mas como sei que Tania é supervisora de Mirian ?
ou seja o que amarra 255 a 9898 ?
>
6 minutos atrás, Motta disse:
mas como sei que Tania é supervisora de Mirian ?
ou seja o que amarra 255 a 9898 ?
Na verdade não tem nada que amarra a supervisora à operadora. A supervisora é responsável pelas transações que as operadoras não têm permissão. Um cancelamento de cupom por exemplo, ou a liberação de um cliente sem saldo.
Na tabela de movimento, tem o campo com o código da operadora e outro campo com o código da supervisora. Esse campo da supervisora só alimentado, quando houve alguma operação que precisou da supervisora.
Confesso ficar perdido agora se não tem link como exibir o supervisor !?
select c.m00ad as CUPOM, c.m00ac as PDV, c.m02ak as VALOR, p.descricao as FINALIZADORA, c.m02ah as OPERADOR, f.nome as NOME_OP, c.m02ao as SUPERVISOR, s.nome as NOME_SUPfrom zan_m02 c inner join tab_funcionario f on c.m02ao = f.cod_funcionario inner join tab_funcionario s on c.m02ao = s.cod_funcionario
inner join tab_finalizadora p on c.m02ai = p.cod_finalizadorawhere c.m00af = to_date('09/03/20','dd/mm/yy')and c.m00za = 3and c.m00ac = 9and c.m00ad = 379678group by c.m00ad,c.m00ac,c.m02ak,p.descricao,c.m02ah,f.nome,c.m02ao;O campo c.m02ao do join é o mesmo !?
>
Em 11/04/2020 at 12:42, Motta disse:
O campo c.m02ao do join é o mesmo !?
eu trocaria o nome se fosse eu, mas como a consulta não é minha
até deixei desse jeito, já que a consulta já está trazendo o valor correto, o código vem certo, é só o nome que está vindo errado

ok
zan_m02.m02ao sinaliza o funcionário , pelo que entendi , o que sinaliza o suprevisor.
Não seria o caso de instanciar duas vezes tab_funcionario ?