Uz.ytkownik Ryan napisa?:
> Ok I have a query in a program that looks something like this
>
> select
> reference_number as foo,
> '(10,10)'::point <-> point(x,y) as distance
> from imagemap
> where
> index_number = '2322' and
> block_number = '140'
> order by distance
> limit 1;
>
> I wanted to add a clause in where 'and distance < 30'
> but according to the postgres manual it says I cannot do that for WHERE or
> HAVING clauses, instead use the real name.
>
> However dropping the 'as distance' from my query gives me a column name of
> '?column?' which happens to not be worth a dang thing.
>
> How can it be done?
>
> (I suddenly have a feeling its going to require a subselect)
Your feeling is 50% accurate. If you want to use subselect, throw "<10"
into this subselect, because you will have performance loss.
You can also use whole function in where clause and order by: select reference_number as foo, '(10,10)'::point <->
point(x,y)as distance from imagemap where index_number = '2322' and block_number = '140' where '(10,10)'::point
<->point(x,y)<10 order by '(10,10)'::point <-> point(x,y) limit 1;
BTW Did you try to use polygons in your image maps, or you have rather
point oriented web page than area oriented?
Regards,
Tomasz Myrta