Array
(
)

Consulta SQL - Ajuuda

Zenner
   - 10 set 2004

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?


Motta
   - 10 set 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´


Zenner
   - 10 set 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


Motta
   - 10 set 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)


Motta
   - 10 set 2004

corrigindo


Citação:
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)