Duvidas em relação à uma sub-query.

08/04/2020

0

Olá, boa tarde.
A situação é a seguinte.
Tenho 2 tabelas, uma de clientes e outra de faturas.
Na tabela faturas o mesmo clientes aparece varias vezes, porem preciso identificar todos os clientes que não possuem faturas em atraso ou nenhuma pendencia financeira.

O meu select ficou assim.

SELECT c.nome,c.telefone,c.celular FROM dba.clientes c WHERE id NOT IN(SELECT id_cliente FROM dba.faturas WHERE pago = ''''''''NÃO'''''''' and coalesce(restado,0) <> 1);

Mas ele não me da nenhum retorno.
No aguardo.
Jhonatan Alves

Jhonatan Alves

Responder

Post mais votado

08/04/2020

Olá, boa tarde.
A situação é a seguinte.
Tenho 2 tabelas, uma de clientes e outra de faturas.
Na tabela faturas o mesmo clientes aparece varias vezes, porem preciso identificar todos os clientes que não possuem faturas em atraso ou nenhuma pendencia financeira.

O meu select ficou assim.

SELECT c.nome,c.telefone,c.celular FROM dba.clientes c WHERE id NOT IN(SELECT id_cliente FROM dba.faturas WHERE pago = ''''''''NÃO'''''''' and coalesce(restado,0) <> 1);

Mas ele não me da nenhum retorno.
No aguardo.


Boa noite!

No caso, o cliente sempre vai ter uma fatura vinculada porém com o status PAGO definido como SIM ou NAO?
se sim, tente:

SELECT fat.id_cliente, c.nome, c.telefone, c.celular FROM dba.faturas AS fat LEFT JOIN dba.clientes AS c ON fat.id_cliente=c.id WHERE fat.pago='NÃO' ...

Se houver algum periodo em que o cliente não terá nenhuma fatura vinculada:
SELECT c.nome,c.telefone,c.celular, (SELECT c.nome,c.telefone,c.celular FROM dba.clientes c WHERE id NOT IN(SELECT id_cliente FROM dba.faturas WHERE pago = ''''''''SIM'''''''' ...) AS fatura FROM dba.clientes c HAVING fatura IS NULL

Não consegui simular isso, então pode haver algum erro de sintaxe. De qualquer forma, espero ajudar no raciocínio... :)

Ricardo Arraes

Ricardo Arraes
Responder

Mais Posts

08/04/2020

Ricardo Arraes

Olá, boa tarde.
A situação é a seguinte.
Tenho 2 tabelas, uma de clientes e outra de faturas.
Na tabela faturas o mesmo clientes aparece varias vezes, porem preciso identificar todos os clientes que não possuem faturas em atraso ou nenhuma pendencia financeira.

O meu select ficou assim.

SELECT c.nome,c.telefone,c.celular FROM dba.clientes c WHERE id NOT IN(SELECT id_cliente FROM dba.faturas WHERE pago = ''''''''NÃO'''''''' and coalesce(restado,0) <> 1);

Mas ele não me da nenhum retorno.
No aguardo.


Boa noite!

No caso, o cliente sempre vai ter uma fatura vinculada porém com o status PAGO definido como SIM ou NAO?
se sim, tente:

SELECT fat.id_cliente, c.nome, c.telefone, c.celular FROM dba.faturas AS fat LEFT JOIN dba.clientes AS c ON fat.id_cliente=c.id WHERE fat.pago='NÃO' ...

Se houver algum periodo em que o cliente não terá nenhuma fatura vinculada:
SELECT c.nome,c.telefone,c.celular, (SELECT c.nome,c.telefone,c.celular FROM dba.clientes c WHERE id NOT IN(SELECT id_cliente FROM dba.faturas WHERE pago = ''''''''SIM'''''''' ...) AS fatura FROM dba.clientes c HAVING fatura IS NULL

Não consegui simular isso, então pode haver algum erro de sintaxe. De qualquer forma, espero ajudar no raciocínio... :)


**Correção na ultima query:

SELECT c.nome,c.telefone,c.celular, (SELECT fat.id FROM dba.faturas AS fat WHERE fat.id_cliente=c.id AND fat.pago = ''''''''NAO'''''''' ...) AS fatura FROM dba.clientes c HAVING fatura IS NULL

Responder

09/04/2020

Emerson Nascimento

tente assim:
SELECT
	nome,telefone,celular
FROM
	dba.clientes
WHERE
	not id in (SELECT id_cliente FROM dba.faturas WHERE pago <> 'SIM' and vencimento < getdate())
Responder

14/04/2020

Jhonatan Alves

Olá, boa tarde senhores.
Obrigado pelo retorno, eu acabei resolvendo o problema e não salvei a query para compartilhar com os senhores.
Sou DBA em iniciação, ainda estou me adaptando e das próximas vezes prometo trazer um retorno.
Certamente abrirei novos tópicos compartilhando duvidas e na medida do possível ajudarei quem estiver com duvidas.

Att.
Jhonatan Alves.
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar