Antw: aliases break my query
Gerhard Dieringer <dieringg@eba-haus.de>
From: "Gerhard Dieringer" <DieringG@eba-haus.de>
To: <pgsql-sql@postgresql.org>, "<Joseph Shraibman" <jks@selectacast.net>
Date: 2000-05-26T06:54:10Z
Lists: pgsql-sql
Joseph Shraibman wrote: > These two queries are exactly alike. The first one uses aliases except > for the order by. The second uses aliases also for the order by. The > third uses whole names. The third has the behavior I want. > Someone please tell me what I am doing wrong. I don't want to have to > use whole names for my query. > playpen=> select ta.a,ta.b,ta.c, (select count (tb.zz) where tb.yy = > ta.a) from tablea ta, tableb tb order by tablea.a; > playpen=> select ta.a,ta.b,ta.c, (select count (tb.zz) where tb.yy = > ta.a) from tablea ta, tableb tb order by ta.a; >playpen=> select tablea.a,tablea.b,tablea.c, (select count (tableb.zz) > where tableb.yy = tablea.a) order by tablea.a; I think what you actually want is an outer join: SELECT tablea.a, tablea.b, tablea.c, Count(tableb.zz) AS zzcount FROM tablea LEFT JOIN tableb ON tablea.a = tableb.yy GROUP BY tablea.a, tablea.b, tablea.c; that is not supported in postgreSQL 7.0, but can be simulated with SELECT tablea.a, tablea.b, tablea.c, Count(tableb.zz) AS zzcount FROM tablea INNER JOIN tableb ON tablea.a = tableb.yy GROUP BY tablea.a, tablea.b, tablea.c UNION SELECT tablea.a, tablea.b, tablea.c, 0 AS zzcount FROM tablea WHERE tablea.a NOT IN (SELECT yy FROM tableb); Gerhard