これは説明するのが難しいものです。半径 x マイル以内のすべての郵便番号を見つけることができます。しかし、私がやりたいことは、MaxDistance <= x zipcode である tblUsers からすべての Userid を見つけることです。
平易な英語で言えば、郵便番号に基づいて半径内にいるすべての人を知りたいです。MaxDistance
たとえば、私はテーブルを持っています:
tblUsers(ID int, Maxdistance int,郵便番号 varchar(5)) 1|50|94129 2|25|94111 3|100|19019
私の2番目のテーブルでは:
tblTmpPlaces(ID int,郵便番号 varchar(5)) 1|94129
私がやりたいのは、tblTmpPlaces zipcode を使用することです。ユーザー 1 と 2 が最大距離内にいると言って、これらを選択できるようにしたいと考えています。ただし、ユーザー 3 の最大距離は 100 で、tblTmpPlaces の郵便番号 94129 には十分に近くありません。94129 はサンフラン、19019 はフィラデルフィアです。ユーザーは、サンフランシスコから 100 マイル以上離れています。
これは私が距離を取得するために使用してきたものですが、これは中央の場所を使用してエリア内のすべてを検索しますが、MaxDistance を考慮していません。どんな助けでも大歓迎です。
だから基本的にselect ID from tblUsers where
これは私がつまずいている部分です
SELECT Zipcode
FROM tblZipcodes
WHERE ( 3959
* acos(
cos(
radians(
@XLocationParam))
* cos(
radians(
x(location)))
* cos(
radians(
y(location))
- radians(
@YLocationParam))
+ sin(
radians(
@XLocationParam))
* sin(
radians(
x(location)))) <= 30))