ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

dúvida consulta SQL (Firebird)

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
grsoft
Aprendiz
Aprendiz


Registrado: Segunda-Feira, 10 de Abril de 2006
Mensagens: 107

MensagemEnviada: Qua Mai 20, 2020 12:11 pm    Assunto: dúvida consulta SQL (Firebird) Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qua Mai 20, 2020 1:55 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
grsoft
Aprendiz
Aprendiz


Registrado: Segunda-Feira, 10 de Abril de 2006
Mensagens: 107

MensagemEnviada: Qua Mai 20, 2020 2:18 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qua Mai 20, 2020 2:39 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
grsoft
Aprendiz
Aprendiz


Registrado: Segunda-Feira, 10 de Abril de 2006
Mensagens: 107

MensagemEnviada: Qui Mai 21, 2020 8:59 am    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB