我有一张包含食物联合数据及其纬度和经度的表格。
我正在使用此查询
$q = "SELECT (
(ACOS(SIN( ".$userLatitude." * PI() / 180) * SIN(foodjoint_latitude * PI() / 180) + COS(".$userLongitude." * PI() / 180) * COS(foodjoint_longitude * PI() / 180) * COS((foodjoint_longitude - ".$longitude.") * PI() / 180)) * 180 / PI()) * 60 * 1.1515 * 1.609344) AS distance
, foodjoint_id
, foodjoint_name
, open_hours
, cont_no
, AVG(customer_ratings) AS rating
, address_line
, city
FROM provider_food_joints,customer_review HAVING distance <=3";
$ userLatitude和$ userLongitude是用户location.I希望以km为单位比较距离。 thnx提前。 我想显示3公里以下的食物连接数据。
当我刚刚运行它时,它不会选择任何行。但如果有条件则它会获取所有记录。
答案 0 :(得分:0)
我在我的一个项目中找到了一些代码,但是我不确定距离计算。你应该改进你的JOIN
..有什么表加入?
$q = "SELECT (
(
(
ACOS(
SIN(".$userLatitude." * PI() / 180) *
SIN(foodjoint_latitude * PI() / 180) +
COS(".$userLatitude." * PI() / 180) *
COS(foodjoint_latitude * PI() / 180) *
COS(
(".$userLongitude." - foodjoint_longitude) * PI() / 180)
) *
180 / PI()
) * 60 * (1.1515*1.609344)
) AS distance
, foodjoint_id
, foodjoint_name
, open_hours
, cont_no
, AVG(customer_ratings) AS rating
, address_line
, city
FROM provider_food_joints,customer_review
HAVING distance < 4";