Thread: passing a multiple join to a function?

passing a multiple join to a function?

From
Louis-David Mitterrand
Date:
Hi,

I've got this ugly case statement that I'd like to hide in a function:
select...case when    d.start_date <= CURRENT_DATE and    case when w.show_type in ('cinéma','livre')    then
d.start_date>= CURRENT_DATE - 21    else (d.end_date >= CURRENT_DATE or d.end_date is null) endthen '0_actualite'when
d.start_date > CURRENT_DATEthen '1_agenda'else '2_archive'endas timing...from story s   join show w on (s.id_show =
w.id_show)  join show_date d on (d.id_show = w.id_show and        d.start_date = (select d2.start_date from show_date
d2                             where d2.id_show = w.id_show                                                    order by
d2.end_date>= CURRENT_DATE desc,            d2.start_date limit 1)   )...    
 

I could very well create a show_timing(int) function that accepts an 
id_show and performs its own, additional, multiple join complex query on 
story, show_date, and show.

Is there a way of feeding enough data to the function to avoid another 
query?

Thanks,


Re: passing a multiple join to a function?

From
"Rodrigo De León"
Date:
On 12/17/07, Louis-David Mitterrand <vindex+lists-pgsql-sql@apartia.org> wrote:
> I've got this ugly case statement that I'd like to hide in a function:

Why don't you hide the entire query in a VIEW?


Re: passing a multiple join to a function?

From
Louis-David Mitterrand
Date:
On Mon, Dec 17, 2007 at 12:27:34PM -0500, Rodrigo De León wrote:
> On 12/17/07, Louis-David Mitterrand <vindex+lists-pgsql-sql@apartia.org> wrote:
> > I've got this ugly case statement that I'd like to hide in a function:
> 
> Why don't you hide the entire query in a VIEW?

That is probably the best solution. Thanks