Pessoal,
Não consegui achar uma solução...
Preciso de um retorno de diversas tabelas..
mas nao posso criar funções para
retornar os campos de cada tabela, pois testei e tive um custo de 50% a
mais que o método ja utilizado.
A query que utilizo atualmente esta anexa.
Obrigado
Tulio
_______________________________________________________________________________________________________________________
De: Fabrízio de Royes Mello <[email protected]>
Para: Tulio Santos <[email protected]>; Comunidade PostgreSQL
Brasileira <[email protected]>
Enviadas: Quarta-feira, 28 de Setembro de 2011 10:57
Assunto: Re: [pgbr-geral] Functions retornando campos multiplos
Em 28 de setembro de 2011 10:50, Tulio Santos <[email protected]>
escreveu:
Bom dia pessoal,
>
>
>Preciso criar uma função que retorne uma query que envolve diversos INNER
>JOIN.
>No entanto, não estou conseguindo este retorno de campos multiplos.
>Pesquisei na web mas encontrei apenas para retorno de uma unica tabela...
>Alguem tem uma dica?
>
>
Já deu uma olhada em [1] ?
[1] http://www.postgresql.org/docs/current/interactive/plpgsql-control-structures.html#PLPGSQL-STATEMENTS-RETURNING
--
Fabrízio de Royes Mello
Consultoria/Coaching PostgreSQL
>> Blog sobre TI: http://fabriziomello.blogspot.com
>> Perfil Linkedin: http://br.linkedin.com/in/fabriziomello
>> Twitter: http://twitter.com/fabriziomello
________________________________________________________________________________________________________________
select n1.idrep_eventon1 as id,em.emissora,ev.evento as cliente,pr.praca,
reMT.dia,reMT.mes,reMT.ano,jv.programa,
pm.dataprog as data, jv.horario as hora_jove,pm.hhprograma as horaprog,
ap.apresentacao,jv.diadasemana as "Dias Semana", ev.evento,
esp.esporte, sub.subesporte, '1' as nível, '' as clube,'' as propriedade,
'' as tipoprop, '' as anunciante,
'' as produto, n1.ini,n1.fim, (n1.fim-n1.ini) as intervalo, jv.custo30,
n1.valor_prop, n1.valor_total
from rep_eventon1 n1
inner join cli_progsmidia pm ON pm.idprog = n1.idprog
inner join jvtv_dados jv ON jv.codprog = pm.codprog and
jv.ano = pm.ano and
jv.mes = pm.mes and
jv.codpraca = pm.codpraca and
jv.codrede = pm.codrede
inner join cm_evento ev On ev.codevento = n1.codevento
inner join jvtv_redes em On em.codrede = pm.codrede
inner join jvtv_pracas pr On pr.codpraca = pm.codpraca
inner join repesportesmt resp On resp.idrepesportesmt = n1.idrepesportesmt
inner join reportagemmt reMT On reMT.idreportagemmt = resp.idreportagemmt
inner join cm_apresentacao ap On ap.codapresentacao = pm.codapresentacao
inner join cm_esporte esp On esp.codesporte = resp.codesporte
inner join cm_subesporte sub On sub.codesporte = esp.codesporte
where sub.subesporte = :subesporte and pm.dataprog between :dataini and :datafim
UNION
select n2.idreportagemdadosn2 as id,em.emissora,ev.evento as cliente, pr.praca,
reMT.dia,reMT.mes,reMT.ano,jv.programa,
pm.dataprog as data, jv.horario as hora_jove,pm.hhprograma as horaprog,
ap.apresentacao,jv.diadasemana as "Dias Semana", ev.evento,
esp.esporte, sub.subesporte, '2' as nível, cb.clube as clube,'' as
propriedade, '' as tipoprop, '' as anunciante,
'' as produto, n2.ini,n2.fim, (n2.fim-n2.ini) as intervalo, jv.custo30,
n2.valor_prop, n2.valor_total
from reportagemdadosn2 n2
inner join rep_eventon1 n1 ON n1.idrep_eventon1 = n2.idrep_eventon1
inner join cli_progsmidia pm ON pm.idprog = n1.idprog
inner join jvtv_dados jv ON jv.codprog = pm.codprog and
jv.ano = pm.ano and
jv.mes = pm.mes and
jv.codpraca = pm.codpraca and
jv.codrede = pm.codrede
inner join cm_evento ev On ev.codevento = n1.codevento
inner join jvtv_redes em On em.codrede = pm.codrede
inner join jvtv_pracas pr On pr.codpraca = pm.codpraca
inner join repesportesmt resp On resp.idrepesportesmt = n1.idrepesportesmt
inner join reportagemmt reMT On reMT.idreportagemmt = resp.idreportagemmt
inner join cm_apresentacao ap On ap.codapresentacao = pm.codapresentacao
inner join cm_esporte esp On esp.codesporte = resp.codesporte
inner join cm_subesporte sub On sub.codesporte = esp.codesporte
inner join cm_clubes cb On cb.codclube = n2.codclube
where sub.subesporte = :subesporte and pm.dataprog between :dataini and :datafim
UNION
select n3.idreportagemdadosn3 as id,em.emissora,ev.evento as cliente,pr.praca,
reMT.dia,reMT.mes,reMT.ano,jv.programa,
pm.dataprog as data, jv.horario as hora_jove,pm.hhprograma as horaprog,
ap.apresentacao,jv.diadasemana as "Dias Semana", ev.evento,
esp.esporte, sub.subesporte, '3' as nível, cbm.clube || ' x ' ||cbv.clube
as clube,prop.propriedade, tp.tipoprop,
an.anunciante, ma.marca as produto, n3.ini,n3.fim, (n3.fim-n3.ini) as
intervalo, jv.custo30, n3.valor_prop, n3.valor_total
from reportagemdadosn3 n3
inner join rep_eventon1 n1 ON n1.idrep_eventon1 = n3.idrep_eventon1
inner join cli_progsmidia pm ON pm.idprog = n1.idprog
inner join jvtv_dados jv ON jv.codprog = pm.codprog and
jv.ano = pm.ano and
jv.mes = pm.mes and
jv.codpraca = pm.codpraca and
jv.codrede = pm.codrede
inner join cm_evento ev On ev.codevento = n1.codevento
inner join jvtv_redes em On em.codrede = pm.codrede
inner join jvtv_pracas pr On pr.codpraca = pm.codpraca
inner join repesportesmt resp On resp.idrepesportesmt = n1.idrepesportesmt
inner join reportagemmt reMT On reMT.idreportagemmt = resp.idreportagemmt
inner join cm_apresentacao ap On ap.codapresentacao = pm.codapresentacao
inner join cm_esporte esp On esp.codesporte = resp.codesporte
inner join cm_subesporte sub On sub.codesporte = esp.codesporte
inner join cm_clubes cbm On cbm.codclube = n3.codclubem
inner join cm_clubes cbv On cbv.codclube = n3.codclubev
inner join cm_anunciantes an On an.codanunciante = n3.codanunciante
inner join cm_marcas ma On ma.codmarca = n3.codmarca
inner join cm_tipoprop tp On tp.codtipoprop = n3.codtipoprop
inner join cm_propriedades prop On prop.codpropriedade = n3.codpropriedade
where sub.subesporte = :subesporte and pm.dataprog between :dataini and :datafim
order by data, emissora,ini,nível;_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral