Hello All, 

The following query give me what I want.  

Select nspname, COALESCE(t_count.count,0) as num_of_tables, 
COALESCE(v_count.count,0) as num_of_views     
FROM pg_namespace   
Left Join (SELECT schemaname, count(*) as count FROM pg_tables group by 
schemaname) t_count on (t_count.schemaname = nspname)
Left Join (SELECT schemaname, count(*) as count FROM pg_views  group by 
schemaname) v_count on (v_count.schemaname = nspname)
where nspname !~* 'pg_' and 
(COALESCE(t_count.count,0)+COALESCE(v_count.count,0) 
<= 2)
order by 1,2;
But, why I can not  use the alias of the select statement ( as in the original 
post)  in the where clause.     


Regards


 




________________________________
From: Chris Curvey <ch...@chriscurvey.com>
To: salah jubeh <s_ju...@yahoo.com>
Cc: pgsql <pgsql-general@postgresql.org>
Sent: Fri, April 15, 2011 5:28:39 PM
Subject: Re: [GENERAL] correlated query as a column and where clause



On Fri, Apr 15, 2011 at 11:22 AM, salah jubeh <s_ju...@yahoo.com> wrote:

Hello All,
>
>I am wondering,  why I can not add the following  '  A > 10'  in the where  
>clause  i.e.   'where nspname !~* 'pg_'  and A > 10'
>
>Select nspname, (SELECT count(*) as count FROM pg_tables where schemaname = 
>nspname) as A 
>
>FROM pg_namespace
>where nspname !~* 'pg_' 
>

I can't answer your question directly, but I would rewrite the query as:

select pg_namespace.nspname, count(*)
from pg_namespace
join pg_tables on pg_namespace.nspname = pg_tables.schemaname
where pg_namespace.nspname not like 'pg_%'
group by pg_namespace.nspname
having count(*) > 10



>
>Thanks in advance 
>
>
>


-- 
Ignoring that little voice in my head since 1966!

Reply via email to