From: Aaron Bono <postgresql@aranya.com>
To: Bryce Nesbitt <bryce1@obviously.com>
Cc: pgsql-sql@postgresql.org
Subject: Re: Can function results be used in WHERE?
Date: Mon, 10 Jul 2006 22:21:34 -0500
Message-ID: <bf05e51c0607102021i73ae93bey15f31a8ef91d007f@mail.gmail.com> (raw)
In-Reply-To: <44B2EFBC.1090201@obviously.com>
References: <44B29376.2030107@obviously.com>
<bf05e51c0607101302w271c7773tdec47e76b192f2c9@mail.gmail.com>
<44B2CFC7.7060101@obviously.com>
<bf05e51c0607101533ld2ee15fm4cff4f7ce23a320a@mail.gmail.com>
<44B2EFBC.1090201@obviously.com>
On 7/10/06, Bryce Nesbitt <bryce1@obviously.com> wrote:
>
> Aaron Bono wrote:
> >
> >
> > On 7/10/06, *Bryce Nesbitt* <bryce1@obviously.com
> > <mailto:bryce1@obviously.com>> wrote:
> >
> >
> > I think it is ugly also, but no other syntax seems to work:
> >
> > stage=# select
> > pod_code,lat,lon,calculate_distance(lat,lon,37.789629,-122.422082)
> as
> > dist from eg_pod where dist < 1 order by dist desc limit 10;
> > ERROR: column "dist" does not exist
> >
> >
> > SELECT
> > pod_code,
> > lat,
> > lon,
> > calculate_distance(lat,lon,37.789629,-122.422082) as dist
> > FROM eg_pod
> > WHERE calculate_distance(lat,lon, 37.789629,-122.422082) < 1
> > ORDER BY calculate_distance(lat,lon,37.789629,-122.422082) desc limit
> 10;
> Yep, that works. I guess with IMMUTABLE it's even effecient.
> But I have to pass 6 arguments, not 2. Is there a way to make it look
> cleaner?
> I had expected using the column label (e.g. "dist") to work with WHERE,
> just as it does with ORDER BY.
You can also try
SELECT
pod_code,
lat,
lon,
dist
FROM (
SELECT
pod_code,
lat,
lon,
calculate_distance(lat,lon,37.789629,-122.422082) as dist
FROM eg_pod
) eg_prod
WHERE dist < 1
ORDER BY dist desc limit 10;
If the 37.789629 and -122.422082 are static values you can create a view for
it. Otherwise you can create a function or stored procedure that takes 2
arguments and returns the results of the subquery.
Just some options. Not sure which you would prefer. I am sure there are
more ways to do it.
-Aaron Bono
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-sql@postgresql.org
Cc: postgresql@aranya.com, bryce1@obviously.com
Subject: Re: Can function results be used in WHERE?
In-Reply-To: <bf05e51c0607102021i73ae93bey15f31a8ef91d007f@mail.gmail.com>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox