SQL ステートメントを介してユーザーに最も近い場所を返そうとすると問題が発生します。テストするために、まったく同じ座標を使用しています。これが私が持っているものです:
SQL:
SELECT `companies`.`customerName` ,
(3959 *
ACOS(
COS(
RADIANS(37.367485) * COS(RADIANS(`locations`.`gps_lat`)) *
COS(
RADIANS(`locations`.`gps_lng`) - RADIANS(-77.399994) +
SIN(RADIANS(37.367485)) * SIN(RADIANS(`locations`.`gps_lat`))
)
)
)
)
AS `distance`
FROM `locations`
JOIN `companies` ON `locations`.`co_id`
HAVING `distance` > 25
ORDER BY distance
LIMIT 0 , 10
結果:
| customerName | distance |
| SOME COMPANY | 1914.41747964854 |
locations
テーブルの値:
gps_lat | gps_lng
37.367485 | -77.399994
Google
の例を使用しました。式を数回確認しましたが、どこが間違っていたのかわかりません。どんな助けでも大歓迎です。
編集:
私が何をしているのかを知っていると、私には混乱があるようです:
>
結果を得るために が代入されました。1914
明らかに より大きくなり25
ます。
このアプリケーションは、ユーザー座標を Android アプリから Web サーバーに渡します。緯度と経度は$_GET
値から取得され、Web サーバーの MYSQL データベース内の企業から相互参照されます。
上記の構文は、Mysql Workbench で SQL ステートメントをチェックしているだけです。明らかに、ゼロ値の結果を探しています。