Consulta SQL - Ajuuda

10/09/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?


Zenner

Respostas

10/09/2004

Motta

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´


Responder Citar

10/09/2004

Zenner

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


Responder Citar

10/09/2004

Motta

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)


Responder Citar

10/09/2004

Motta

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)



Responder Citar