On Tue, April 19, 2005 8:55 am, Hank said:
> Talk about over complicating things... here's the above query simplifed.
>
> I can not figure out why they were self joining the table three times:
>
> SELECT b.zip_code, b.state,
>        (3956 * (2 * ASIN(SQRT(
>        POWER(SIN(((a.lat-b.lat)*0.017453293)/2),2) +
>        COS(a.lat*0.017453293) *
>        COS(b.lat*0.017453293) *
>        POWER(SIN(((a.lng-b.lng)*0.017453293)/2),2))))) AS distance
> FROM zips a, zips b
> WHERE
>        a.zip_code = '90210'
> GROUP BY distance
> having distance <= 5;

You'd have to time it, and *MAYBE* with enough indices this will all work
out, but you'd probably be better off doing two queries.

One to look up the long/lat for 90210, and another on just zips to
calculate the distance.

Benchmark on your own hardware and see for yourself.  I could be 100% wrong.

-- 
Like Music?
http://l-i-e.com/artists.htm


-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to