Duvidas em relação à uma sub-query.
08/04/2020
0
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
Post mais votado
08/04/2020
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
Mais Posts
08/04/2020
Ricardo Arraes
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
09/04/2020
Emerson Nascimento
SELECT nome,telefone,celular FROM dba.clientes WHERE not id in (SELECT id_cliente FROM dba.faturas WHERE pago <> 'SIM' and vencimento < getdate())
14/04/2020
Jhonatan Alves
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.
Clique aqui para fazer login e interagir na Comunidade :)