php - 编码间 : joining 2 tables based on 2 parameters

标签 php mysql sql codeigniter

我有两个数据库表 quotationsgarag。两个表都有 lat, lng 字段。

我必须根据特定定义的半径向附近的车库显示报价。

为此,我必须从报价表中获取lat,lng并将其与车库表的lat,lng相匹配

我可以在 CI 中使用以下查询获取附近的车库

$sql = "SELECT *, ( 3959 * acos( cos( radians(" . $lat . ") ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(" . $lng . ") ) + sin( radians(" . $lat . ") ) * sin( radians( lat ) ) ) ) AS distance FROM garage HAVING distance < 25";
$result = $this->db->query($sql) ; 

但我不确定如何将它与请求的经纬度报价联系起来

你能帮我一下吗

最佳答案

SELECT 
    Q.*
FROM garage g
LEFT JOIN quotes q
ON SQRT(SQUARE(ABS(q.lat - g.lat)) + SQUARE(ABS(q.lng - g.lng))) <= @MaxDistanceInDegrees
WHERE g.id = @GarageID

这应该有效。请注意,如果您有一个大型数据库,这个问题会变得更加复杂,您可能需要创建某种网格系统来缓解 n^2 问题。

关于php - 编码间 : joining 2 tables based on 2 parameters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45306722/

相关文章:

MySQL db - 我可以在字段内使用通配符吗?

php - MySQL 离开有条件的连接查询 - 超时

javascript - 使用基于id的Angular JS合并数组中的多个对象

mysql - 将所有字段分组在一行中

javascript - Facebook 群组中的 "Seen By"功能

python - 有时脚本闲置,需要我按 RETURN 才能解锁它们 - Python

sql - 在存储过程事务中执行 addlinkedServer 错误

PHP多文件上传检查空文件

php - 如果WordPress中的meta_key=x AND meta_value=y,我该如何显示图像?

php - 只需 1 个查询即可增加 View 表?