Re: Select + min question
Re: Select + min question
От:
"Christopher Kings-Lynne" <chriskl@familyhealth.com.au>
Дата:
> Now, what I want is to select the b_date which has the minimum "id" and > active=t. > > A normal query would be : > SELECT b_date,min(id) FROM test WHERE active='t' GROUP BY id LIMIT 1 > > However, I only want to select b_date. So, if I perform the following > query, I get the following error: > > devrim=# SELECT b_date FROM test WHERE active='t' AND id=min(id) LIMIT 1; > ERROR: Aggregates not allowed in WHERE clause Use a subselect (and don't compare to 't' if it's a boolean field...) SELECT b_date FROM test WHERE active AND id=(SELECT min(id) FROM test) LIMIT 1; Chris
Re: Select + min question
От:
Mathieu Arnold <mat@mat.cc>
Дата:
--On Sunday, June 23, 2002 14:36:14 +0300 Devrim GUNDUZ wrote: > > Hi, > > I have created a table like this: > > CREATE TABLE test ( > b_date char(8), > active boolean, > id serial > ); > > and inserted some rows. > > Now, what I want is to select the b_date which has the minimum "id" and > active=t. > > A normal query would be : > SELECT b_date,min(id) FROM test WHERE active='t' GROUP BY id LIMIT 1 > > However, I only want to select b_date. So, if I perform the following > query, I get the following error: > > devrim=# SELECT b_date FROM test WHERE active='t' AND id=min(id) LIMIT 1; > ERROR: Aggregates not allowed in WHERE clause > > What should I do? ANy suggestions? I believe that : SELECT b_date, id FROM test WHERE active='t' ORDER BY id LIMIT 1; is the right thing. -- Mathieu Arnold
Select + min question
От:
Devrim GUNDUZ <devrim@oper.metu.edu.tr>
Дата:
Hi, I have created a table like this: CREATE TABLE test (b_date char(8),active boolean,id serial ); and inserted some rows. Now, what I want is to select the b_date which has the minimum "id" and active=t. A normal query would be : SELECT b_date,min(id) FROM test WHERE active='t' GROUP BY id LIMIT 1 However, I only want to select b_date. So, if I perform the following query, I get the following error: devrim=# SELECT b_date FROM test WHERE active='t' AND id=min(id) LIMIT 1; ERROR: Aggregates not allowed in WHERE clause What should I do? ANy suggestions? Best regards. -- Devrim GUNDUZ devrim@oper.metu.edu.tr devrim.gunduz@linux.org.tr Web : http://devrim.oper.metu.edu.tr -------------------------------------
Re: Select + min question
От:
Devrim GUNDUZ <devrim@oper.metu.edu.tr>
Дата:
Hi, On Sun, 23 Jun 2002, Christopher Kings-Lynne wrote: > > Use a subselect (and don't compare to 't' if it's a boolean field...) > > SELECT b_date FROM test WHERE active AND id=(SELECT min(id) FROM test) LIMIT > 1; It'a a shame for me that I could not think of using subselects :-( Anyway, thanks. Best regards. -- Devrim GUNDUZ devrim@oper.metu.edu.tr devrim.gunduz@linux.org.tr Web : http://devrim.oper.metu.edu.tr -------------------------------------