Jump to content
Rodymb

Usar mesmo campo para duas consultas diferentes

Recommended Posts

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:

image.png.cef5916af59045c6bab942a12944625c.png

 

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.

 

Share this post


Link to post
Share on other sites

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 ?

Share this post


Link to post
Share on other sites
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;

 

image.png.3b787f8c1029be7424545ed1a8cfd607.png

 

O NOME_OP deveria seri Miran e o NOME_SUP é a Tania.

 

image.png.89339b57737c32a580017108c6f81190.png

 

Share this post


Link to post
Share on other sites

o que sinaliza o supervisor ?

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites

o que sinaliza o supervisor ?

 

Ou seja como eu sei que Jair é supervisor do Guedes ?!

Share this post


Link to post
Share on other sites
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

image.png.1fea5ecbea3f57298ab7574c7324da4c.png

 

tab_perfil

image.png.481a2a0e5f80e34039f478a075e8d255.png

 

tab_perfil_funcionario

image.png.6a2da2fe5e58437da8abd41c30a501c1.png

nessa tabela, indica que o funcionário com código 9898(Tania), ela é supervisora, mas também é operadora.

Share this post


Link to post
Share on other sites

mas como sei que Tania é supervisora de Mirian ?

ou seja o que amarra 255 a 9898 ?

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites

Confesso ficar perdido agora se não tem link como exibir o supervisor !?

Share this post


Link to post
Share on other sites

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_SUP
from 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_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;

Share this post


Link to post
Share on other sites

O campo c.m02ao do join é o mesmo !?

Share this post


Link to post
Share on other sites

 

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

image.png.115b555ef3d539d9ecf95fde807ef14c.png

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Omar~
      Então alguém teria uma ideia se existe uma forma mais correta (otimizada) para está executando uma query como essa:
      SELECT pages.p_hash, pages.p_title, pages.p_sector, pages.p_created, sectors.s_hash, sectors.s_title, sectors.s_link, users.u_hash, users.u_name FROM pages INNER JOIN sectors ON pages.p_sector = sectors.s_hash INNER JOIN users ON pages.p_created = users.u_hash  
      Não que venha ao caso mas por explicação mesmo.
      Entro na tabela páginas setores e usuários . Pois tenho que apresentar dados da página, o setor onde se encontra e quem foi o autor
    • By Hamilcar
      Bom dia!
      Peguei um sistema para atualizar para funcionar, o problema é que foi criado uma ligação de tabelas meio louca aqui, vou tentar explicar, tem uma tabela usuários que tem um id, e tem uma outra tabela em que a usuários é ligada e nela pode ter um ou mais usuários, o problema é que foi colocado os ids na mesma linha separados por um caracter, e os usuários se repetem, vou colocar abaixo para exemplificar:
      Tabela Usuarios/id 
                   id1, id2, id3...
       
      Tabela Escala
                  id_escala1_idUser -> id1|id2|id3...
                  id_escala2_idUser -> id1|id2|id3...
       
      Como vou gastar um tempo para refazer novamente o banco de dados, queria fazer funcionar momentaneamente, e gostaria da ajuda para tentar se possível fazer uma consulta que me traga todos os usuarios listados na tabela escala
    • By mamotinho
      Olá, pessoal mais uma vez venho pedi a ajuda de vocês estou com um problema ao roda uma query que montei, eu sou iniciante na area e não tenho muito conhecimento então o codigo que fiz foi parte de meu conhecimento básico. bom o que eu quero resolver nessa query é o seguinte, eu quero consultar uma tabela e nela pega todos os registros com a a data vencida e lista ela dentro do while em seguida retornar dentro desse if o valor da coluna de cada uma exemplo de como fiz e ficou com loop infinito.

       
      declare @id int declare @getdate datetime select @id = IDCadastrado, @getdate = RegDate from BancoTeste.dbo.MinhaTabela where RegDate < getdate() while @id is not null begin select * from BancoTeste.dbo.MinhaTabela where IDCadastrado = @id end quando eu executo isso ai ele executa infinitamente o valor do primeiro registro repetidamente.
    • By agness
      a imagem é uma parte de uma tabela extensa.
      como eu faço uma consulta por exemplo para jogador igual à 1, 3, 5 e liga igual à 1?
      isso é para uma verificação se existe uma liga com exatamente os jogadores 1, 3 e 5, nem mais nem menos
      espero ter sido claro
    • By Luiz Henrique
      Olá pessoas,
       
      Preciso fazer uma consulta em 3 tabelas, mas quando insiro a 3ª na consulta já duplica resultados:
      Tabela ticket
      id,  id_cliente
       
      Tabela clientes
      id, nome
       
      Tabela servicos_ticket
      id, id_ticket, valor_ticket
       
      Aqui OK
      SELECT ticket.*, clientes.* FROM ticket JOIN clientes ON ticket.id_cliente = clientes.id Mas aqui duplica, porque um ticket pode ter vários serviços cadastrados.
      ticket.*, clientes.*, servico_ticket.* FROM ticket JOIN clientes ON ticket.id_cliente = clientes.id JOIN servico_ticket ON ticket.id = servico_ticket.id_ticket A listagem tem que ser apenas dos tickets cadastrados, tentei colocar DISTINCT ticket.* mas não adianta.
      o resultado deveria ser algo assim:
       
      12344 luiz 10.00
      12345 henrique 20.00
       
      mas se o ticket do luiz tiver 3 serviços cadastrados
       
      12344 luiz 10.00
      12344 luiz 10.00
      12344 luiz 10.00
      12345 henrique 20.00
       
      e deveria ser apenas 1, aí eu faria a soma dos valores
       
      12344 luiz 30.00
       
      Como elimino essa duplicação?
      Deu para entender?
      Obrigado.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.