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 

Select

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


Registrado: Terça-Feira, 27 de Dezembro de 2011
Mensagens: 41

MensagemEnviada: Ter Jan 24, 2012 10:16 pm    Assunto: Select Responder com Citação

Boa noite!!

Gostaria de fazer uma busca a qual mostrasse campos de tabelas diferentes. Por exemplo: selecionar os campos c1, c2 da tabela1 onde o c1 = 2 e selecionar os campos c1, c2 da tabela2 onde c1 = 3. Tem como fazer isso?

Consegui fazer com que mostre os valores que quero, porém, aparecem somente os dois primeiros campos, os valores dos outros dois aparecem juntos com os outros.

Exemplo do resultado:
Codigo | Total
2 100
3 500

Gostaria que fosse dessa maneira:
ID_Cliente | Total | ID_Conta | Saldo
2 100 3 500

Alguém sabe?
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: Ter Jan 24, 2012 10:34 pm    Assunto: Responder com Citação

Boa noite

A princípio você deve utilizar um join.
Supondo que a tabela2 possui a coluna ID_Cliente, que é uma foreign key referenciando a tabela1, a query ficaria mais oue menos como segue:

Código:
select t1.ID_Cliente, t1.Total, t2.ID_Conta, t2.Saldo
from Tabela1 as t1
join Tabela2 as t2 on t2.ID_Cliente = t1.ID_Cliente
where (t1.ID_Cliente = :ID_Cliente) and (t2.ID_Conta = :ID_Conta)


obs: em vez de deixar os valores fixos (c1 = 2 ou c1 = 3) utilizei parâmetros

Espero que seja útil.

_________________
Assinatura: Imoveis a venda em Suzano
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
bunen
Novato
Novato


Registrado: Terça-Feira, 27 de Dezembro de 2011
Mensagens: 41

MensagemEnviada: Qua Jan 25, 2012 12:08 am    Assunto: Responder com Citação

Deu certo, Muito obrigado! Mr. Green

Só não sei como utilizar parâmetros nesse caso.

Esse tipo de busca com mais de uma tabela, só daria certo com chave estrangeira certo?
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 Jan 25, 2012 9:26 am    Assunto: Responder com Citação

O caracter de dois pontos (:) na instrução é utilizado para especificar o nome de um parâmetro.
Ao executar a query pelo IBExpert será exibida uma janela para o preenchimento dos valores.
Antes de executar a query pela aplicação em delphi será necessário utilizar código para preenchimento dos valores. Ex (o código pode variar um pouco de acordo com o componente utilizado para executar a query):

Código:
Query1.ParamByName('ID_Cliente').AsInteger := 100;
Query1.ParamByName('ID_Conta').AsInteger := 200';


Sobre a chave estrangeira, obrigatória não é mas é recomendada para garantir a integridade dos dados e obter melhor desempenho.

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