Filtro complicado !!!!
Salve galera delphianda !!!!
É o seguinte galera a estrutura do meu banco de dados é a seguinte:
[list:18066e3ad3]
[*:18066e3ad3]Banco de dados Interbase.
[*:18066e3ad3]Tabela cliente onde salva os dados pessoais do cliente (nome,endereço,etc...).
[*:18066e3ad3]outra tabela ligada com a tabela cliente que salva os contratos que o cliente tem.
[*:18066e3ad3]e uma 3ª tabela ligada na tabela que mostra os contratos , essa tabela mostra os tados do contrato (vencimento das parcelas,avalista etc...)
[/list:u:18066e3ad3]
[size=12:18066e3ad3][color=blue:18066e3ad3]Agora que vem a bucha é o seguinte, tenho que selecionar em uma query os dados da tabela cliente (nome,endereço etc...)so que so quero os clientes que tenhao um contrato e que a parcela numero tal (campo parcela_1) esteja entre as datas estipulas antes do filtro (em um datetimepicker).Espero que alguem aqui saiba !!!![/size:18066e3ad3][/color:18066e3ad3]
[size=20:18066e3ad3][color=red:18066e3ad3]Valeu pessoal!!![/size:18066e3ad3][/color:18066e3ad3]
É o seguinte galera a estrutura do meu banco de dados é a seguinte:
[list:18066e3ad3]
[*:18066e3ad3]Banco de dados Interbase.
[*:18066e3ad3]Tabela cliente onde salva os dados pessoais do cliente (nome,endereço,etc...).
[*:18066e3ad3]outra tabela ligada com a tabela cliente que salva os contratos que o cliente tem.
[*:18066e3ad3]e uma 3ª tabela ligada na tabela que mostra os contratos , essa tabela mostra os tados do contrato (vencimento das parcelas,avalista etc...)
[/list:u:18066e3ad3]
[size=12:18066e3ad3][color=blue:18066e3ad3]Agora que vem a bucha é o seguinte, tenho que selecionar em uma query os dados da tabela cliente (nome,endereço etc...)so que so quero os clientes que tenhao um contrato e que a parcela numero tal (campo parcela_1) esteja entre as datas estipulas antes do filtro (em um datetimepicker).Espero que alguem aqui saiba !!!![/size:18066e3ad3][/color:18066e3ad3]
[size=20:18066e3ad3][color=red:18066e3ad3]Valeu pessoal!!![/size:18066e3ad3][/color:18066e3ad3]
Guilherme
Curtidas 0
Respostas
Fabio Nascimento
21/07/2005
Do jeito que eu entendi, é pra ser algo assim:
select * from clientes c
join contratos t
where t.parcela_1 between :data1 and data2
order by c.codigo
select * from clientes c
join contratos t
where t.parcela_1 between :data1 and data2
order by c.codigo
GOSTEI 0
Guilherme
21/07/2005
Cara desse jeito ai nao deu nao !!!
Esqueci de por o nome das tabelas:
[size=14:7f576e6532][color=red:7f576e6532]Cliente,Contratos,dados_contrato[/size:7f576e6532][/color:7f576e6532]
A tabela contratos pode receber mais de 1 registro por cliente e a tabela dados_contrato so recebe 1 registro por contrato.
Espero ter ajudado mais !!!!
Esqueci de por o nome das tabelas:
[size=14:7f576e6532][color=red:7f576e6532]Cliente,Contratos,dados_contrato[/size:7f576e6532][/color:7f576e6532]
A tabela contratos pode receber mais de 1 registro por cliente e a tabela dados_contrato so recebe 1 registro por contrato.
Espero ter ajudado mais !!!!
GOSTEI 0
Guilherme
21/07/2005
nada pessoal ?????
GOSTEI 0
Rjun
21/07/2005
Select Cl.Codigo, Cl.Nome, Count(Co.NumContrato) From Clientes Cl Left Join Contrato Co On Co.CodCliente = Cl.Codigo Left Join DadosCon Dc on Dc.NumContrato = Co.NumContrato Where Dc.Data Between :Data1 and :Data2 Group By Cl.Codigo, Cl.Nome Having Count(Co.NumContrato) = 1
GOSTEI 0
Guilherme
21/07/2005
mais i si o cliente tiver mais de 1 contrato vai selecionar + de 1 vez ???
este codigo verifica todos os contratos ????
este codigo verifica todos os contratos ????
GOSTEI 0
Rjun
21/07/2005
Do jeito que está, so seleciona os clientes que tenham 1 contrato. Sim, ele verifica todos os contratos.
GOSTEI 0
Guilherme
21/07/2005
tipo o cliente tem 10 contratos entre o periodo das datas ai ele mostra apenas 1 ????
cara como so iniciante em sql sera q vc me esplica as funçao q vc uso ai ???/
cara como so iniciante em sql sera q vc me esplica as funçao q vc uso ai ???/
GOSTEI 0
Rjun
21/07/2005
Não...ele vai totalizar o numero de contratos, para cada cliente dentro da data especificada...se o numero de contratos for igual a 1 então ele seleciona. Não é isso que você quer fazer?
GOSTEI 0
Guilherme
21/07/2005
intao si for 10 contratos no periodo de datas vai aparecer 10 vezes esse cliente é isso ???
GOSTEI 0
Rjun
21/07/2005
Amigo, se ele tem 10 contratos então na totalização o cliente X terá 10 contratos. A clausula Having está igual a 1. Então ele não aparece.
Cliente Contrato
000001 0000001
000002 0000002
000001 0000003
000001 0000004
000002 0000005
Se fosse um select so com totalização, o resultado seria assim:
Cliente Total
000001 3
000002 2
Cliente Contrato
000001 0000001
000002 0000002
000001 0000003
000001 0000004
000002 0000005
Se fosse um select so com totalização, o resultado seria assim:
Cliente Total
000001 3
000002 2
GOSTEI 0
Guilherme
21/07/2005
intao so esta motrando o 1º contrato ??????
me add ai no msn !!!!!
me add ai no msn !!!!!
GOSTEI 0
Rjun
21/07/2005
Cara, ele ta totalizando....o contratos 1, 3 e 4 pertecem ao cliente 1 e os contratos 2 e 5 ao cliente 2. Então o cliente 1 tem 3 contratos e o cliente 2 tem 2 contratos.
GOSTEI 0
Guilherme
21/07/2005
so q eu quero q tipo si o cliente tem 5 contrato so q 3 deles estao entre as datas indicadas intao este cliente tem q me retornar 3 vezes é isso q quero !!!
GOSTEI 0
Rjun
21/07/2005
Putz....se era só isso, vc podia ter deixado mais claro...
Select Cl.Codigo, Cl.Nome Co.NumContrato From Clientes Cl Left Join Contrato Co On Co.CodCliente = Cl.Codigo Left Join DadosCon Dc on Dc.NumContrato = Co.NumContrato Where Dc.Data Between :Data1 and :Data2
GOSTEI 0
Guilherme
21/07/2005
putz cara vc é o salvador da patria !!!!!!
si nao for abuso vc me esplica como q funciona essas funçao q vc uso ???
si nao for abuso vc me esplica como q funciona essas funçao q vc uso ???
GOSTEI 0
Rjun
21/07/2005
Qual função? Só usei Join. Ele faz uma mesclagem de registros entre tabelas de acordo com a condição especificada. Dá uma procurada em Join no google, ou mesmo no forum sobre SQL Server que voce ira encontrar bom material.
GOSTEI 0
Guilherme
21/07/2005
valew cara !!!!!!!!!
vc nao tem msn ????
vc nao tem msn ????
GOSTEI 0