From: | "Gerhard Dieringer" <DieringG(at)eba-haus(dot)de> |
---|---|
To: | <pgsql-sql(at)postgresql(dot)org>, "<Joseph Shraibman" <jks(at)selectacast(dot)net> |
Subject: | Antw: aliases break my query |
Date: | 2000-05-26 06:54:10 |
Message-ID: | s92e3bbc.001@kopo001 |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
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
From | Date | Subject | |
---|---|---|---|
Next Message | Sherril Mathew | 2000-05-26 10:53:56 | A Question |
Previous Message | Markus Wagner | 2000-05-26 06:21:05 | PG/DBI: 'NOTICE: UserAbortTransactionBlock and not in in-progress state' |