Postgres执行多表数据比较

时间:2016-04-01 13:51:37

标签: database postgresql-9.4

我在Postgres DB中有以下表结构:

表区:

id - int, PK
name - varchar

表zone_boundaries

id - int, PK
zone_id - FK (zones.id),
boundary - polygon

表车

id - int, PK
vehicle_registration - varchar

表vehicle_logs

id - int, PK
vehicle_id - int, FK (vehicles.id)
latitude - float
longitude - float

区域边界表中的边界列将zone_id指定的区域的纬度/经度坐标保存为多边形数据。

现在,我想获取其中lat / lng坐标属于select语句中zone_boundaries表中区域边界的所有车辆的数量。我该如何撰写此查询?

1 个答案:

答案 0 :(得分:0)

获得这一次通过将是棘手的。首先,您需要转换纬度和经度,例如:

ST_GeometryFromText('POINT(x y)');

之后您可以使用ST_Intersects。无论两个几何是否相交,St_Intersects都将返回。或者,您可以使用ST_CONTAINS。