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
[email protected]
"Para ter sucesso é necessário amar de verdade o que se faz!"
-----Mensagem original-----
De: pgbr-geral [mailto:[email protected]] Em nome de
Stclara
Enviada em: quarta-feira, 21 de outubro de 2015 11:26
Para: [email protected]
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:[email protected]>
[email protected]
<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
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral