Is there anybody who can help me with making a query with the following functionality:
- Let's have a simple statement like: - SELECT relname FROM pg_catalog.pg_class WHERE relkind = 'r';- This will produce a nice result with a single column - the names of all tables. 
- Now lets imagine that one of the tables has name "table1". If we execute: - SELECT count(*) FROM table1;- we will get the number of rows of the table "table1". 
- Now the real question - how these two queries can be unified and to have one query, which to give the result of two columns: name of the table and number of rows? Written in pseudo SQL it should be something like this: - SELECT relname, (SELECT count(*) FROM relname::[as table name]) FROM pg_catalog.pg_class WHERE relkind = 'r';
And here is and example - if there are 3 tables in the database and the names are table1, table2 and table 3, and they have respectively 20, 30 and 40 rows, the query result should be like this:
 -------------
|relname| rows|
|-------------|
|table1 |   20|
|-------------|
|table2 |   30|
|-------------|
|table3 |   40|
 -------------
Thanks to everyone who is willing to help ;-)
P.S. Yes I know that the table name is not schema-qualified ;-) Let's hope that all tables in the database have unique names ;-)
(Corrected typos from rename to relname in last query)
EDIT1: The question is not related to "how can I find the number of rows in a table". What I'm asking is: how to build a query with 2 selects and the second to have as FROM the value of a column from the result of the first select.
EDIT2: As @jdigital suggested I've tried the dynamic querying and it does the job, but can be used only in PL/pgSQL. So it doesn't fit my needs. In additional I tried with PREPARE and EXECUTE statement - yet again it is not working. Anyway - I'll stick with the two queries approach. But I'm damn sure that PostgreSQL is capable of this ....
 
    