Thread: How to make a IN without a table... ?

How to make a IN without a table... ?

From
David Pradier
Date:
Hi everybody,

i ran today in a problem when doing some (too much for me) advanced sql...

What i want to do is something like this:

SELECTmy_var1,my_var2,my_function(my_var1, my_var2)
FROM (SELECT    '1',    '2',    '3',    '4'
) AS my_var1_values,
(SELECT    '1',    '2',    '3',    '4'
) AS my_var2_values

In short, i want to calculate the result of the function my_function for
some values of my_var1, cross by some values of my_var2.
These values are not taken in a table, but put in directly.
They are a lot, so i would prefer not to write the whole thing, line
after line. (Let's say 10 values for the first, and 40 for the second =>
400 lines of code to maintain...)

I really don't see how to do this :-/

Any help is heartfully welcome,
David
-- 
dpradier@apartia.fr 01.46.47.21.33


Re: How to make a IN without a table... ?

From
Bruno Wolff III
Date:
On Wed, Jun 04, 2003 at 16:59:02 +0200, David Pradier <dpradier@apartia.fr> wrote:
> 
> In short, i want to calculate the result of the function my_function for
> some values of my_var1, cross by some values of my_var2.
> These values are not taken in a table, but put in directly.
> They are a lot, so i would prefer not to write the whole thing, line
> after line. (Let's say 10 values for the first, and 40 for the second =>
> 400 lines of code to maintain...)
> 
> I really don't see how to do this :-/

You could programatically generate the sql code and use union
(e.g. (select 1 union select 2 union select 3 union select 4))
to join the rows together or you could write a set returning
function.