Обсуждение: including limited lines depending on input parameter

Поиск
Список
Период
Сортировка

including limited lines depending on input parameter

От
kvnsmnsn@cs.byu.edu
Дата:
Hello all,

     Okay, this is me back again regarding those two tables I needed
to join again, <abc> and <def>.  Once these tables are joined together
the resulting table has two fields of interest, <n> and <p>.  There
can be multiple <p> values for one <n> value.  I have an input parame-
ter <i> that can have three values, 1, 2, or 3+.  Based on <i> I need
to include in the output table either one <p> value for each <n> va-
lue (as far as I know chosen at random) if one exists, two <p> values
for each <n> value (again chosen at random) if two exist, or all <p>
values for each <n> value, respectively.

     Does anyone know how I would go about generating such an output
table?

     I have a book _Practical PostgreSQL_ that I thought would help me
figure out how to do this (since my SQL server is PostgreSQL), but so
far it has been no use.  Any information on this would be greatly ap-
preciated.

                                ---Kevin Simonson

"You'll never get to heaven, or even to LA,
if you don't believe there's a way."
from _Why Not_


Re: including limited lines depending on input parameter

От
Jim Nasby
Дата:
On Apr 27, 2007, at 11:10 AM, kvnsmnsn@cs.byu.edu wrote:
>      Okay, this is me back again regarding those two tables I needed
> to join again, <abc> and <def>.  Once these tables are joined together
> the resulting table has two fields of interest, <n> and <p>.  There
> can be multiple <p> values for one <n> value.  I have an input parame-
> ter <i> that can have three values, 1, 2, or 3+.  Based on <i> I need
> to include in the output table either one <p> value for each <n> va-
> lue (as far as I know chosen at random) if one exists, two <p> values
> for each <n> value (again chosen at random) if two exist, or all <p>
> values for each <n> value, respectively.
>
>      Does anyone know how I would go about generating such an output
> table?
>
>      I have a book _Practical PostgreSQL_ that I thought would help me
> figure out how to do this (since my SQL server is PostgreSQL), but so
> far it has been no use.  Any information on this would be greatly ap-
> preciated.

You'll want to use the LIMIT clause, though in the 3+ case you'll
want to have no LIMIT. You should probably wrap all this in a plpgsql
function.
--
Jim Nasby                                            jim@nasby.net
EnterpriseDB      http://enterprisedb.com      512.569.9461 (cell)