Consulta SQL - Ajuuda
Turma, estou me batendo com uma consulta..
Tenho uma tabela de associados, esses associados pertencem cada um a um banco. Cada associado tem uma lista de situações.. essas situações são inseridas com o tempo (ativo, desligado, aposentado, licença médica...)
preciso de uma listagem de todos os bancos que possuam pelo mnos um associado ativo (cod 1)
como farei iso???
segue as tabelas..
banco - cd_banco, nm_banco
associado - cd_associado, cd_banco, nm_associado
situacao - cd_associado, st_situcao, dt_situacao
ou seja, a listagem tem q devolver o nome do banco em que possua algum associado que tenha a ultima situação cadastrada (cmpo max(dt_situacao) com st_situacao=1)
Alguém pode me ajudar nessa?
Tenho uma tabela de associados, esses associados pertencem cada um a um banco. Cada associado tem uma lista de situações.. essas situações são inseridas com o tempo (ativo, desligado, aposentado, licença médica...)
preciso de uma listagem de todos os bancos que possuam pelo mnos um associado ativo (cod 1)
como farei iso???
segue as tabelas..
banco - cd_banco, nm_banco
associado - cd_associado, cd_banco, nm_associado
situacao - cd_associado, st_situcao, dt_situacao
ou seja, a listagem tem q devolver o nome do banco em que possua algum associado que tenha a ultima situação cadastrada (cmpo max(dt_situacao) com st_situacao=1)
Alguém pode me ajudar nessa?
Zenner
Curtidas 0
Respostas
Motta
10/09/2004
uma solucao :
banco - cd_banco, nm_banco
associado - cd_associado, cd_banco, nm_associado
situacao - cd_associado, st_situcao, dt_situacao
select distinct b.cd_banco,nm_banco
from banco b,associado a,situacao s
where b.cd_banco = a.cd_banco
and a.cd_assoc = s.cd_assoc
and s.st_sit = ´ativo´
banco - cd_banco, nm_banco
associado - cd_associado, cd_banco, nm_associado
situacao - cd_associado, st_situcao, dt_situacao
select distinct b.cd_banco,nm_banco
from banco b,associado a,situacao s
where b.cd_banco = a.cd_banco
and a.cd_assoc = s.cd_assoc
and s.st_sit = ´ativo´
GOSTEI 0
Zenner
10/09/2004
Assim seria fácil, ms o campo de situação não é da tabela associados não. Temos uma tabel onde armazenamos todas as situações passadas do associado.. Qdo ele foi associado, quando ele ficou de licença maternidade/pternidade, aposentado, ler.. entro outros.. nessa tabela pode por exemplo uma pessoa ter sido ativa, depois licença por ler, depois ativa novamente, depois licença paternidade e depois aposentado.. Tenho q pegar a ultima situação de casa associado.. O campo q define a ultima situação é um campo data, dt_inclusao.. o MAX(dt_inclusao) q indica o ultimo procedimento
GOSTEI 0
Motta
10/09/2004
qual bd permite subselect ?
select distinct b.cd_banco,nm_banco
from banco b,associado a,situacao s
where b.cd_banco = a.cd_banco
and a.cd_assoc = s.cd_assoc
and s.st_sit = ´ativo´
and s.dt_situacao = (select max(ss.dt_situacao)
from situacao ss
where s.cod_assoc = s.cod_assoc)
select distinct b.cd_banco,nm_banco
from banco b,associado a,situacao s
where b.cd_banco = a.cd_banco
and a.cd_assoc = s.cd_assoc
and s.st_sit = ´ativo´
and s.dt_situacao = (select max(ss.dt_situacao)
from situacao ss
where s.cod_assoc = s.cod_assoc)
GOSTEI 0
Motta
10/09/2004
corrigindo
qual bd permite subselect ?
select distinct b.cd_banco,nm_banco
from banco b,associado a,situacao s
where b.cd_banco = a.cd_banco
and a.cd_assoc = s.cd_assoc
and s.st_sit = ´ativo´
and s.dt_situacao = (select max(ss.dt_situacao)
from situacao ss
where s.cod_assoc = ss.cod_assoc)
GOSTEI 0