select complicado ... Alguem me ajude !!!

Firebird

28/07/2003

Preciso fazer uma pesquisa por nome ou cpf na tabela de cliente, para que ela retorne todos os registros dos contratos referentes a este cliente(tabela contrato). Ainda quero que esta consulta seja feita com a clausula like se for por nome ...Lembro que existe uma chave estrangeira na tabela de contrato com codcliente...

tabela cliente
codcliente (PK)

tabela contrato
codcontrato (PK)
codcliente (FK)


e ai alguem me ajuda ?


Midas

Midas

Curtidas 0

Respostas

Afarias

Afarias

28/07/2003

select con.* from contratos con, clientes cli
where con.codcliente=cli.codcliente
and cli.nome starting with ´valor´

ou

select con.* from contratos con, clientes cli
where con.codcliente=cli.codcliente
and cli.nome containing ´valor´


vc deve ter índices nos campos contratos.codcliente, cliente.codcliente e cliente.nome -- nos campos FK ou PK não é necessário criar o índice pois o IB cria automaticamente.


T+


GOSTEI 0
Midas

Midas

28/07/2003

o seguinte codigo eu fiz mas dá erro pois as tenho o resultado com varias linhas ...se for um cliente só tudo bem ... mas quando da mais de um da erro ...

texto:=´select cod_clien ´Código´ from cliente where´
if RBnome.Checked=true then
texto:= texto + ´ cliente.nome_clien like ´+#39+Editcliente.Text+´¬´+39
else
texto:= texto + ´ cliente.cpf_clien = ´+ 39+ editcliente.Text+39;
texto:= texto + ´ and cliente.cod_clien intersect select distinct cod_cont ´N.Número´,contrato_cont Contrato from contrato ´;
sql.add(texto);
open;
end;
end;

tenho que fazer um query que procure letra por letra o por nome no evento onchange do edit ou por cpf.... o resultado tenho que pegar o codigo do cliente e procurar todos os registros pertencentes a ele na tabela de contrato...


GOSTEI 0
Midas

Midas

28/07/2003

select con.* from contratos con, clientes cli where con.codcliente=cli.codcliente and cli.nome starting with ´valor´ ou select con.* from contratos con, clientes cli where con.codcliente=cli.codcliente and cli.nome containing ´valor´ vc deve ter índices nos campos contratos.codcliente, cliente.codcliente e cliente.nome -- nos campos FK ou PK não é necessário criar o índice pois o IB cria automaticamente. T+

valeu vou tentar ...


GOSTEI 0
Midas

Midas

28/07/2003

select con.* from contratos con, clientes cli where con.codcliente=cli.codcliente and cli.nome starting with ´valor´ ou select con.* from contratos con, clientes cli where con.codcliente=cli.codcliente and cli.nome containing ´valor´ vc deve ter índices nos campos contratos.codcliente, cliente.codcliente e cliente.nome -- nos campos FK ou PK não é necessário criar o índice pois o IB cria automaticamente. T+

o que seria ´Valor´ ?


GOSTEI 0
Afarias

Afarias

28/07/2003

|o que seria ´Valor´ ?

o nome q vc está procurando! (q o usuário vai digitar no Edit)


T+


GOSTEI 0
Midas

Midas

28/07/2003

|o que seria ´Valor´ ? o nome q vc está procurando! (q o usuário vai digitar no Edit) T+


entendi .. obrigado...


GOSTEI 0
POSTAR