From: | Tod McQuillin <devin(at)spamcop(dot)net> |
---|---|
To: | Jens Hartwig <jhartwig(at)debis(dot)com> |
Cc: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Nikolaj Lundsgaard <Nikolaj(at)konfus(dot)dk>, <pgsql-sql(at)postgresql(dot)org> |
Subject: | Re: Sv: how to build this query ??? Please help !!! |
Date: | 2001-01-04 11:55:15 |
Message-ID: | Pine.GSO.4.31.0101040542540.4164-100000@sysadmin |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
On Thu, 4 Jan 2001, Jens Hartwig wrote:
> This would be a self-join of one table like:
>
> select ord.a_nr,
> c1.count(*),
> c2.count(*),
> ...
> from orders ord,
> cylinders c1,
> cylinders c2,
> ...
> where c1.z_a_nr = ord.a_nr
> and c2.z_status = 'zdr'
> and ...
>
> This in fact is not possible in PostgreSQL (it seems that the table
> alias "c1" cannot be prefixed to the aggregate-function "count(*)")
That's true, and you can't say count(c1.*) either, but you *can* say
count(c1.z_status)...
Continuing from your example using tables x and y:
# select count(x1.a) as ones, count(x2.a) as twos
from x x1, x x2 where x1.a = 1 and x2.a = 2;
ones | twos
------+------
1 | 1
(1 row)
But it doesn't do what you want:
# insert into x(a) values(2);
INSERT 313887 1
# select count(x1.a) as ones, count(x2.a) as twos from x x1, x x2
where x1.a = 1 and x2.a = 2;
ones | twos
------+------
2 | 2
(1 row)
An inspection of the cartesian product (select x1.a, x2.a from x x1, x x2)
will make it clear why it doesn't work.
I can't think of any way to get this:
ones | twos
------+------
1 | 2
without subqueries like so:
# select (select count(*) from x where a = 1) as ones,
(select count(*) from x where a = 2) as twos;
But, to answer your question, "Does this at all correlate with the
philosophy of a relational database?" ... My answer is yes! After all,
isn't it just the same as "select a, count(a) from x group by a" turned
sideways?
If you can think of how to do this "the hard way" (i.e. without subselects
or temp tables etc.) please share.
--
Tod McQuillin
From | Date | Subject | |
---|---|---|---|
Next Message | Graham Vickrage | 2001-01-04 16:04:07 | psql -f option |
Previous Message | Kovacs Zoltan Sandor | 2001-01-04 11:50:38 | Re: Support for arrays in PL/pgSQL |