Обсуждение: Generating a range of integers in a query

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

Generating a range of integers in a query

От
Aaron Bingham
Дата:
Hello,

I've got an interesting problem: I need to select all possible values
of an attribute that do /not/ occur in the database.

This would be easy (in my case at least) if there were a way to
generate a table containing all integers between 1 and n, where n is
the result of a subquery.  In my case, n will be at most a few
hundred.  I would like to be able to generate this table as a
subquery.  Any ideas?

Thanks,

-- 
--------------------------------------------------------------------
Aaron Bingham
Senior Software Engineer
Cenix BioScience GmbH
--------------------------------------------------------------------



Re: Generating a range of integers in a query

От
Michael Glaesemann
Дата:
On Jul 13, 2005, at 6:13 PM, Aaron Bingham wrote:

> This would be easy (in my case at least) if there were a way to
> generate a table containing all integers between 1 and n, where n is
> the result of a subquery.  In my case, n will be at most a few
> hundred.  I would like to be able to generate this table as a
> subquery.  Any ideas?

Take a look at generate_series(), available in v8.0 and above.

http://www.postgresql.org/docs/8.0/interactive/functions-srf.html


Michael Glaesemann
grzm myrealbox com




Re: Generating a range of integers in a query

От
"Jim Buttafuoco"
Дата:
I use the following function which returns a date series.  You can modify it to return an int series instead

create or replace function alldates(date,date) returns setof date
as
'
declare       s alias for $1;       e alias for $2;       d date;
begin       d := s;
       while d <= e       LOOP               return next d;               select d + \'1 day\'::interval into d;
ENDLOOP;
 
       return null;
end;
'
LANGUAGE 'plpgsql'
;

select * from alldates('2004-07-01','2004-08-10');


---------- Original Message -----------
From: Aaron Bingham <bingham@cenix-bioscience.com>
To: pgsql-sql@postgresql.org
Sent: Wed, 13 Jul 2005 11:13:06 +0200
Subject: [SQL] Generating a range of integers in a query

> Hello,
> 
> I've got an interesting problem: I need to select all possible values
> of an attribute that do /not/ occur in the database.
> 
> This would be easy (in my case at least) if there were a way to
> generate a table containing all integers between 1 and n, where n is
> the result of a subquery.  In my case, n will be at most a few
> hundred.  I would like to be able to generate this table as a
> subquery.  Any ideas?
> 
> Thanks,
> 
> -- 
> --------------------------------------------------------------------
> Aaron Bingham
> Senior Software Engineer
> Cenix BioScience GmbH
> --------------------------------------------------------------------
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 3: Have you checked our extensive FAQ?
> 
>                http://www.postgresql.org/docs/faq
------- End of Original Message -------



Re: Generating a range of integers in a query

От
Scott Marlowe
Дата:
On Wed, 2005-07-13 at 04:13, Aaron Bingham wrote:
> Hello,
> 
> I've got an interesting problem: I need to select all possible values
> of an attribute that do /not/ occur in the database.
> 
> This would be easy (in my case at least) if there were a way to
> generate a table containing all integers between 1 and n, where n is
> the result of a subquery.  In my case, n will be at most a few
> hundred.  I would like to be able to generate this table as a
> subquery.  Any ideas?

Take a look here:

http://www.postgresql.org/docs/8.0/interactive/functions-srf.html

specifically, the generate_series() function.