again, do you really want to join the tables or do a UNION ALL. From one of your posts you said the table were the same.
you need to do something like select * from table_001 union all select * from table_002 ... select * from table_999 I would do this in a set returning function looping of an EXECUTE. If you need help, post the schema for a couple of your tables and I will help with the function Jim ---------- Original Message ----------- From: solarsail <[EMAIL PROTECTED]> To: Yasir Malik <[EMAIL PROTECTED]> Cc: PostgreSQL <pgsql-sql@postgresql.org> Sent: Tue, 4 Oct 2005 15:50:39 -0400 Subject: Re: [SQL] using pg_tables and tablename in queries > I managed to make this work as sub query before... I wish I had > written it down somewhere... > > Regarding the creation of a function. I do have a function that > almost does that. I'm having a hard time getting it to return a set > of records from the EXECUTE command ( more than one row returned by > the select * ...). > > If I generate a temporary table instead of returning the results how > long will that table exist for? Excuse the OOP terminology but would > it be correct to create a 'Singleton' to access the temporary table, > where if it exists and is less than 30 minutes old use that one, > otherwise drop the table and recreate it? > > Thanks > > -- sample function.. > > CREATE OR REPLACE FUNCTION testfunc_jointables() > RETURNS SETOF record AS > $BODY$ > DECLARE > query TEXT; > BEGIN > query := 'auditrecord'; > > FOR > atablename IN select * from pg_tables where tablename like > 'mytable_%' > LOOP > > query := query || ', ' || quote_ident(atablename.tablename); > > END LOOP; > > EXECUTE ' SELECT * from ' || query; > > END; > > On 10/4/05, Yasir Malik <[EMAIL PROTECTED]> wrote: > > > The current behavior is by design. > > > > > > We use the table as a logging repository. It can get very large 250 000 > > > records. Because of the large number of records that we have in the table > > > we > > > found it was much faster to perform inserts on a smaller table. Our > > > current > > > system rolls the tables over every 12 hours or so, creating a new table > > > with > > > the following behavior: > > > > > > CREATE TABLE mytable_temp {...} > > > > > > ALTER TABLE mytable RENAME TO mytable_back_datetime; > > > ALTER TABLE mytable_temp RENAME TO mytable; > > > > > > I want to join the mytable_back_datetime tables together in order to > > > perform > > > queries against my huge set of data to generate some reports. I'm probably > > > going to create a temporary table with a few indexes to make the reports > > > run > > > faster... however I need to join the tables all together first. > > > > > > > I would create a function that creates a string with a query that includes > > all the tables you need, and call execute on the string. You would loop > > through the all tables from pg_tables and keep on appending the table name > > you need. > > > > Regards, > > Yasir > > > > ---------------------------(end of broadcast)--------------------------- > > TIP 3: Have you checked our extensive FAQ? > > > > http://www.postgresql.org/docs/faq > > > > ---------------------------(end of broadcast)--------------------------- > TIP 2: Don't 'kill -9' the postmaster ------- End of Original Message ------- ---------------------------(end of broadcast)--------------------------- TIP 5: don't forget to increase your free space map settings