Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
grsoft Aprendiz

Registrado: Segunda-Feira, 10 de Abril de 2006 Mensagens: 107
|
Enviada: Qua Mai 20, 2020 12:11 pm Assunto: dúvida consulta SQL (Firebird) |
|
|
Caros amigos, estou com uma dúvida em uma SQL e gostaria da ajuda de vocês, seguinte:
tenho 3 tabelas com a seguinte estrutura (resumida)
CLIENTES
COD NOME
PROGRAMAS
COD CODCLI VALOR
PAGAMENTOS
COD CODPROG VENCIMENTO
eu gostaria de uma SQL que me retornasse os programas junto com 1 único pagamento que está mais próximo de vencer |
|
Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qua Mai 20, 2020 1:55 pm Assunto: |
|
|
Boa tarde,
Qual versão do Firebird você está utilizando?
Você vai precisar de qual(is) campo(s) da tabela Pagamentos no resultado?
Você pode postar um pequeno exemplo com uma amostra de dados das tabelas e o respectivo resultado esperado?
Editado pela última vez por imex em Dom Out 01, 2023 5:41 pm, num total de 2 vezes |
|
Voltar ao Topo |
|
 |
grsoft Aprendiz

Registrado: Segunda-Feira, 10 de Abril de 2006 Mensagens: 107
|
Enviada: Qua Mai 20, 2020 2:18 pm Assunto: |
|
|
Firebird 2.5.1
mostrar o NOME do cliente, CODIGO do programa, VALOR e a data de VENCIMENTO do pagamento
tabela CLIENTES
1 GUSTAVO
2 RAFAEL
3 ROBERTA
tabela programas
1 1 100
2 2 100
3 2 200
4 3 150
tabela pagamentos
1 1 20/05/2020
2 1 20/06/2020
3 1 20/07/2020
4 2 25/05/2020
5 2 25/06/2020
6 2 25/07/2020
7 3 15/05/2020
8 3 15/06/2020
9 3 15/07/2020
10 4 18/05/2020
11 4 18/06/2020
12 4 18/07/2020
no caso a SQL teria que me retornar assim:
GUSTAVO 1 100 20/05/2020
RAFAEL 2 100 25/05/2020
RAFAEL 3 200 15/05/2020
ROBERTA 4 150 18/05/2020
imex escreveu: | Boa tarde,
Qual versão do Firebird você está utilizando?
Você vai precisar de qual(is) campo(s) da tabela Pagamentos no resultado?
Você pode postar um pequeno exemplo com uma amostra de dados das tabelas e o respectivo resultado esperado?
|
|
|
Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qua Mai 20, 2020 2:39 pm Assunto: |
|
|
Experimente fazer uns testes dessa forma:
Código: | select
c.Cod,
c.Nome,
pr.Cod as CodProg,
pr.Valor,
(select first 1 pg.Vencimento
from Pagamentos as pg
where pg.CodProg = pr.Cod and pg.Vencimento > current_timestamp
order by pg.Vencimento) as Vencimento
from Clientes as c
inner join Programas as pr on pr.CodCli = c.Cod |
Espero que ajude |
|
Voltar ao Topo |
|
 |
grsoft Aprendiz

Registrado: Segunda-Feira, 10 de Abril de 2006 Mensagens: 107
|
Enviada: Qui Mai 21, 2020 8:59 am Assunto: |
|
|
deu certo meu amigo, você o é cara....
imex escreveu: | Experimente fazer uns testes dessa forma:
Código: | select
c.Cod,
c.Nome,
pr.Cod as CodProg,
pr.Valor,
(select first 1 pg.Vencimento
from Pagamentos as pg
where pg.CodProg = pr.Cod and pg.Vencimento > current_timestamp
order by pg.Vencimento) as Vencimento
from Clientes as c
inner join Programas as pr on pr.CodCli = c.Cod |
Espero que ajude |
|
|
Voltar ao Topo |
|
 |
|