 |
ActiveDelphi .: O site do programador Delphi! :.
|
Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
LFer Novato

Registrado: Quinta-Feira, 15 de Fevereiro de 2007 Mensagens: 3
|
Enviada: Qui Fev 15, 2007 1:16 pm Assunto: SQL: Dúvida em relacionamento entre tabelas |
|
|
Olá, consideremos as seguintes tabelas
Tabela A
Data Valor
10/02/2007 18
11/02/2007 19
12/02/2007 17
14/02/2007 23
Tabela B
Data Qtde Numero
12/02/2007 10 001
10/02/2007 22 002
13/02/2007 01 003
Então, vamos a SQL
Eu quero que ele traga os campos Data, Qrte, Numero da tabela B e também o campo Valor correspondente da tablea A.
Ficaria
Select B.*, A.Valor
From A, B
Where B.Data= A.Data
O que eu quero de extra é, se não há data correspondente na tabela A (como no caso do dia 13/02/2007 da tabela B), ele pegue a data imediatamente inferior, nesse caso, 12/02/2007. Não há limite de distância entre as datas, apenas se a data não for encontrada ele deve procurar uma data anterior.
É possível fazer isso com apenas 1 consulta? Estou utilizando Firebird 1.5.3.4870 |
|
Voltar ao Topo |
|
 |
thomazs Moderador


Registrado: Segunda-Feira, 1 de Março de 2004 Mensagens: 2835
|
Enviada: Qui Fev 15, 2007 1:32 pm Assunto: |
|
|
Código: |
Select B.*, A.Valor
From B
LEFT OUTER JOIN A ON
((A.DATA = B.DATA) OR
(A.DATA =
(SELECT FIRST 1 DATA FROM A A1 WHERE A1.DATA <B.DATA ORDER BY DATA))
|
Teste esse código. Fiz, porém não testei. _________________ Suporte e Consultoria em Desenvolvimento de Sistemas
Bacharel em Sistemas de Informação
Especialista em Bancos de Dados
Desenvolvimento: Clipper, Delphi, PHP, Python/Django |
|
Voltar ao Topo |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|