0

我最近发布了这个问题:getting distance between two points using google gps api with php

我收到了很棒的回复,但是我对该人的回复有一些疑问,并且由于我对该网站的低/新状态,我无法发表评论。在回答我的问题时,其他用户发布了此查询**

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

您的查询应该是这样的:- a是这里的表别名。

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 回答