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

Responder a