+ -
当前位置:首页 → 问答吧 → 请教只用一次查询能够实现的方法

请教只用一次查询能够实现的方法

时间:2011-04-18

来源:互联网

数据表zuobiao
底下的字段和数据在MYSQL里。
Id       Name       X坐标       Y坐标       扩展范围
1       点A              5              10              2厘米
2       点B              -6              13              3厘米
3       点C              8              -12              2.5厘米
4       点D              -4              10              2厘米
未命名-1.jpg (44.42 KB)
2011-4-18 17:56

请问如何查询出包含红点的所有蓝点?像上面这个图,查询能循环出点D和点B,红点是表单输入的X坐标和Y坐标,是用户自己输入的

只用一次select能够做到吗?

还是只能一次查询所有的蓝点,然后再一个一个的排除。虚心求教~

[ 本帖最后由 samwee 于 2011-4-18 17:58 编辑 ]

附件

未命名-1.jpg (44.34 KB)

2011-4-18 17:55

作者: samwee   发布时间: 2011-04-18

declare @redx int;
declare @redy int;

select * from tb where SQRT(power((x坐标-@redx),2)+POWER((y坐标-@redy),2))<扩展范围

-- 就是看圆心之间的距离少于半径的。

作者: gw6328   发布时间: 2011-04-18

这个问题已经困扰我很久了。如果是分两步进行,我的理解是按照红点的x/y轴来搜索地图上所有的蓝点。然后一个一个进行比对,比对在里面的,就真,不在里面就假。

那么我做分页的时候,假设一页查两组数据,那第一页应该是循环出点A和点B,A假所以除去,第一个分页就只显示出1条信息,第二页亦然,这样有时候甚至会出现一个分页没数据之类的状况发生。

作者: samwee   发布时间: 2011-04-18

引用:
原帖由 gw6328 于 2011-4-18 18:00 发表
declare @redx int;
declare @redy int;

select * from tb where SQRT(power((x坐标-@redx),2)+POWER((y坐标-@redy),2))
兄弟,第一个sqrt我查到资料,第二个power貌似都找不到资料,这个是php+mysql吗?

作者: samwee   发布时间: 2011-04-18

求教。

作者: samwee   发布时间: 2011-04-18

热门下载

更多