【发布时间】:2013-12-11 21:07:50
【问题描述】:
我有一个包含 2 个表的数据库:
- 企业。
- 优惠券
Businesses 中的每一行都有以下字段:
{id, details, image, name, location_x, location_y},
其中location_x 和location_y 是谷歌地图的latitue 和longitue 坐标。
在Coupons表中,每一行都有以下字段:
{id, business_id, image, details, goneDate, goneHour}。
id是优惠券id,
而business_id 是这张优惠券所属的business 的id。
我的问题:
通过查询Coupons,如何从给定坐标中获取其所有者业务位置半径小于10km的所有优惠券?
或者换句话说,就是这样的人:
如何获取每个优惠券商家id,然后到商家表中,查看商家id位置的半径是否小于给定位置10公里?
我认为它与inner join有关,不确定。
我正在使用 Java 的 hibernate 框架工作。
请帮助我,在此先感谢!
【问题讨论】:
-
只要知道根据地图坐标计算距离的公式,剩下的就是小菜一碟了
INNER JOIN。 -
您使用的是什么数据库引擎?例如,SQL Server 支持内置空间坐标。
-
@PM77-1 如何使用
INNER JOIN? -
Sql 服务器?没有 francis OP 表示他正在使用 nhibernate,他需要链接或 hql。顺便说一句,在 where 子句中放置 WHERE (X 在坐标 - 10km 和坐标 + 10km 之间) AND(samething to Y)
-
在这种情况下,这可能会有所帮助:dev.mysql.com/doc/refman/5.0/en/spatial-extensions.html