MySQL选择最接近点的矩形区域

时间:2016-03-29 01:29:58

标签: php mysql

我需要从由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中获得这两个结果中最接近的区域,或者更好的是,是否可以将这两个查询组合起来以返回最近的单个区域?

0 个答案:

没有答案