do this via execute in a stored procedure - something like this (written on the flow - untested!)
returns setof text declare my_record record; my counter as bigint; begin for my_record in select tablename from pg_tables where schemaname = 'public' loop execute into counter 'select count(*) from ' || my_record.tablename ; return next my_record.tablename || ': ' || counter::text; end loop; return null; end; On Fri, August 3, 2007 7:35 am, Paul Lambert wrote: > What's the best way to count how many rows are in each table via SQL? Or > is it even possible? > > I'm trying something like: > > select tablename, count(*) from (select tablename from pg_tables where > schemaname = 'public') as test group by tablename; > > But obviously this just gives a count of 1 for each table in the public > schema. > > Can it be done or would I have to write a function? > > -- > Paul Lambert > Database Administrator > AutoLedgers > > > ---------------------------(end of broadcast)--------------------------- > TIP 1: if posting/reading through Usenet, please send an appropriate > subscribe-nomail command to [EMAIL PROTECTED] so that your > message can get through to the mailing list cleanly > -- Psssst! Schon vom neuen GMX MultiMessenger gehört? Der kanns mit allen: http://www.gmx.net/de/go/multimessenger ---------------------------(end of broadcast)--------------------------- TIP 9: In versions below 8.0, the planner will ignore your desire to choose an index scan if your joining column's datatypes do not match