Boa tarde. Veja se o código abaixo te ajuda...
create temp table responsavel(id int, cpf bigint, nome varchar(50)); create temp table aluno(id int, nome varchar(50), idresp1 int, idresp2 int, indRespfin smallint); insert into responsavel(id, cpf, nome) values (1,11122233344499, 'jose da silva'), (2,22233344455599, 'amelia santana'), (3,33344455566699, 'arnaldo almeida'), (4,44455566677799, 'maria santos'); insert into aluno(id, nome, idresp1, idresp2, indrespfin) values (1, 'jose ricardo silva', 1, 2, 1), (2, 'cintia silva', 1, 2, 1), (3, 'ana almeida', 3, 4, 2), (4, 'juliana almeida', 3, 4, 2), (5, 'cristina almeida', 3, 4, 2), (6, 'cristina almeida', null, null, null), (7, 'cristina almeida', null, null, null); select al.id as idAluno, al.nome as nomeAluno, (case when al.indrespfin = 1 then re1.nome when al.indrespfin = 2 then re2.nome else 'Sem responsável financeiro' end) as nomeRespFin, (case when al.indrespfin = 1 then re1.cpf when al.indrespfin = 2 then re2.cpf else null end) as cpfRespFin from aluno al left outer join responsavel re1 on re1.id = al.idresp1 left outer join responsavel re2 on re2.id = al.idresp2; --drop table aluno; --drop table responsavel; Att, Ricardo Corrales ENGSOLUTIONS INFORMÁTICA LTDA Fábrica de Software: Rua Couto Magalhães, 1457 - Centro - Franca/SP (16) 3409-9514 / 3409-9513 Skype: ricorrales Cel: (16) 99200-5113 rica...@engsolutions.com.br "Para ter sucesso é necessário amar de verdade o que se faz!" -----Mensagem original----- De: pgbr-geral [mailto:pgbr-geral-boun...@listas.postgresql.org.br] Em nome de Stclara Enviada em: quarta-feira, 21 de outubro de 2015 11:26 Para: pgbr-geral@listas.postgresql.org.br Assunto: [pgbr-geral] Junção de tabelas com condição Salve, pessoal. Tenho a seguinte situação em um banco que peguei para manutenção: - Tabela aluno - nesta tabela tenho um campo que diz quem é o responsável financeiro. - Responsavel1; - Responsavel2; Tem uma consulta para gerar um contrato que pega os dados do aluno, responsavel1 e responsavel2 e mais o responsável financeiro que devido ao grande número de dados esta muito lenta. Aí pensei em criar uma view para tentar agilizar a pesquisa. Só que precisaria algo assim: select * from alunos join responsavel1 join responsavel2 (case, if) aluno.responsavelfinan = 1 select nome.res1 as nome_fin, cpf.res1 as cpf_fin (case, if) aluno.responsavelfinan = 2 select nome.res2 as nome_fin, cpf.res2 as cpf_fin Isto é possivel? []´s Stclara _______________________________________________ pgbr-geral mailing list <mailto:pgbr-geral@listas.postgresql.org.br> pgbr-geral@listas.postgresql.org.br <https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
_______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral