Então, como já foi dito antes, estude os diversos tipos de JOIN que,
pela sua explicação, me parece que você desconhece, e faça uma única
consulta.
Osvaldo,
Em um contexto de junção eu faria isso:
SELECT
s.*, -- Registros do servico
r.*, -- Registros da Remocao
st.ocorrencia AS sintomatologia, -- sintomatologia
o.ocorrencia AS orientacao -- orientacao
FROM servico s
-- Liga remocao quando existir
LEFT JOIN servico_agenda_remocao r
ON (s.num_servico = r.num_servico)
--Liga orientacao quando existir
LEFT JOIN servico_ocorrencias AS o
ON (s.num_servico = o.num_servico AND o.referencia = '00')
--Liga sintomatologia quando existir
LEFT JOIN servico_ocorrencias AS st
ON (s.num_servico = st.num_servico AND st.referencia = '01')
--Liga quadro clinico quando existir
LEFT JOIN servico_ocorrencias AS qc
ON (s.num_servico = qc.num_servico AND qc.referencia = '04')
WHERE s.num_servico = 227571
Isso resolve.
Minha intenção com uma função seria avaliar a classificação do serviço
(Atendimento ou Remoção)
e buscar apenas o que for pertinente:
Atendimento:
Possui 1 registro em serviço, 1 registro de sintomatologia e 1 registro de
orientacao
Remocao:
Possui 1 registro em serviço, 1 registro em servico_remocao e 1 registro de
quadro clinico
Finalmente, o cerne da minha pergunta (vide título) seria da possibilidade
de concatenar variaveis do tipo record e retorná-las.
Nem entrei no contexto do negócio porque isso é irrelevante pelo texto que
submeti à lista.
SELECT 1 as um, 2 as dois INTO rec1 // Um retorno de única linha
SELECT 3 as tres, 4 as quatro INTO rec2 // Um retorno de única linha
concatenação rec1 X rec2:
um dois tres quatro
1 2 3 4
Att Carlos
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral