Ir para conteúdo

Arquivado

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

cassius_fpu

[Resolvido] JOIN com condição

Recommended Posts

Pessoal, preciso criar uma consulta que exiba o nome de todos os clientes cadastrados, seu respectivo cpf ou cnpj e para os clientes que não fizeram nenhuma compra se ele está ativo ou inativo, tentei o seguinte:

 

select cli.nm_cliente, clipf.nro_cpf, clipj.nro_cnpj, cli.fl_ativo_inativo

from tb_cliente cli left join tb_cliente_pf clipf

on (cli.id_cliente = clipf.id_cliente)

left join tb_cliente_pj clipj

on (cli.id_cliente = clipj.id_cliente)

left join tb_venda vend

on (cli.id_cliente = vend.id_cliente)

where not in (select id_cliente from tb_venda where id_cliente is not null)

 

Porém recebo a informação ativo ou inativo de todos os cliente sendo que eu desejo essa informação apenas dos que ainda não possuem registros na tb_venda.

 

Onde estou errando?

Compartilhar este post


Link para o post
Compartilhar em outros sites

select cli.nm_cliente, clipf.nro_cpf, clipj.nro_cnpj, cli.fl_ativo_inativo

from tb_cliente cli

left join tb_cliente_pf clipf on (cli.id_cliente = clipf.id_cliente)

left join tb_cliente_pj clipj on (cli.id_cliente = clipj.id_cliente)

left join tb_venda vend on (cli.id_cliente = vend.id_cliente)

where not in (select id_cliente from tb_venda where id_cliente is not null)

está praticamente certo o teu mas você não precisa do

left join tb_venda vend on (cli.id_cliente = vend.id_cliente)
pois você só usa essa tabela para verificar se o cliente está na tabela, o que você já está fazendo na cláusula WHERE

a cláusula WHERE está faltando o campo que você está verificando, que deve ser o cli.id_cliente

where cli.id_cliente not in (select id_cliente from tb_venda where id_cliente is not null)

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.