Re: why can a named subselect not be used in a where condition?

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Markus Bertheau <twanger(at)bluetwanger(dot)de>
Cc: postgres sql list <pgsql-sql(at)postgresql(dot)org>
Subject: Re: why can a named subselect not be used in a where condition?
Date: 2002-01-24 18:24:22
Message-ID: 16339.1011896662@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

Markus Bertheau <twanger(at)bluetwanger(dot)de> writes:
> cenes_test=3D> select personen.*, (select max(last_visit) from sessions
> where sessions.personen_id =3D personen.personen_id) as max from personen
> where max between 1009148400 and 1011913200 order by max desc;
> ERROR: Attribute 'max' not found

> Well, why can't I use max in the where clause?

Because max is computed by the select's output list, which logically is
a stage of processing after WHERE. Perhaps you need to buy an SQL
textbook.

> cenes=> select personen.*, (select max(last_visit) from sessions where
> sessions.personen_id = personen.personen_id) from personen where (select
> max(zeitstempel) from sessions where sessions.personen_id =
> personen.personen_id) between 1009148400 and 1011913200;
> ERROR: ExecEvalExpr: unknown expression type 501

> That is a query we have tried on 7.0.2 because of curiosity. But the
> error message looks weird. What does it mean?

This is an internal error. I couldn't reproduce the error using 7.0.2
and straightforward table definitions. I suspect you've not told us
something important, like that one of these things is a view with a
nontrivial definition. In any case, 7.0.2 is a long ways back and I'm
not very concerned about figuring out exactly why it fails. If you can
reproduce the problem on a current release (7.1.3 or 7.2beta) I'd be
interested...

regards, tom lane

In response to

Browse pgsql-sql by date

  From Date Subject
Next Message Marius Andreiana 2002-01-24 18:32:57 Keeping information changes history
Previous Message Markus Bertheau 2002-01-24 18:00:45 auto group by