我需要从由x1 / y1,x2 / y2点定义的矩形区域表中选择最接近x / y坐标的区域。该点位于任何矩形区域之外。
我设法使用两个单独的查询选择x轴和y轴最近的区域。
该表包含zoneid(int),mappath(varchar),type(varchar),x1(int),y1(int),x2(int),y2(int)
列X轴的最近区域
SELECT *
FROM mapfiles_zones a
WHERE a.mappath=? AND a.y1 <= $y AND a.y2 >= $y
GROUP BY a.zoneid
ORDER BY abs(a.x1 - $x), abs(a.x2 - $x)
LIMIT 1
Y轴的最近区域
SELECT *
FROM mapfiles_zones a
WHERE a.mappath=? AND a.x1 <= $x AND a.x2 >= $x
GROUP BY a.zoneid
ORDER BY abs(a.y1 - $y), abs(a.y2 - $y)
LIMIT 1
我无法将返回的区域数组与其各自轴中最接近的确定值进行比较。
我不能在PHP中的数组上使用min(),因为还有其他数值最终被分析。我尝试使用UNION组合数组,但得到错误
number of bound variables does not match number of tokens
如何在PHP中获得这两个结果中最接近的区域,或者更好的是,是否可以将这两个查询组合起来以返回最近的单个区域?