0

私は最近この質問を投稿しました: PHP で google gps api を使用して 2 点間の距離を取得する

素晴らしい返信を受け取りましたが、その人の反応についていくつか質問があり、このサイトに対する私のステータスが低い/新しいため、コメントを返すことができませんでした. 私の質問に応えて、他のユーザーがこのクエリを投稿しました **

SELECT a.*, 3956 * 2 * ASIN(SQRT( POWER(SIN(($lat - lat) * pi()/180 / 2), 2) + COS($lat * pi()/180) * COS(lat * pi()/180) *
POWER(SIN(($long - longi) * pi()/180 / 2), 2) )) as distance 
FROM table
GROUP BY id HAVING distance <= 500 
ORDER by distance ASC**

このクエリについていくつか質問があり、誰かが助けてくれることを望んでいました.

1.a.*とは? 私はSQLの上級者ではありませんが、かなり効率的で、このようなものを見たことがありません。任意のフィールドを表すのか、テーブル内の実際のフィールドを表すのかわかりません

2.これをphpで実行しているため、クエリは引用符で囲まれ、このクエリ構文がわずかに異なります。引用符で囲まれたクエリがどのようになるかを誰かが知っているかどうか疑問に思っていました。

3.このクエリには「GROUP BY id」もあります。クエリを実行しているテーブルに id フィールドがあります。この「id」は、テーブルの id フィールドに関連付けられていますか?

どんな助けでも素晴らしいでしょう。

4

1 に答える 1

0

クエリは次のようになります:- ais table alias here.

SELECT a.*, 3956 * 2 * ASIN(SQRT( POWER(SIN(($lat - lat) * pi()/180 / 2), 2) + COS($lat * pi()/180) * COS(lat * pi()/180) *
POWER(SIN(($long - longi) * pi()/180 / 2), 2) )) as distance 
FROM table AS a
GROUP BY id HAVING distance <= 500 
ORDER by distance ASC

または、シンプルに使用できます

SELECT *, 3956 * 2 * ASIN(SQRT( POWER(SIN(($lat - lat) * pi()/180 / 2), 2) + COS($lat * pi()/180) * COS(lat * pi()/180) *
POWER(SIN(($long - longi) * pi()/180 / 2), 2) )) as distance 
FROM table
GROUP BY id HAVING distance <= 500 
ORDER by distance ASC
于 2013-02-22T04:13:30.620 に答える