在地理范围上加入表格

时间:2014-08-27 16:28:33

标签: sql postgresql select

我有2个独立的表格(链接和部分)。链接表中的信息有点像这样,

Links Table
----------------------------------------------------------------------------
|    id    |    Description    | startLat | startLng | endLat   | endLng   |
----------------------------------------------------------------------------
| 1000259  | Link Number 1     |52.891372 |-1.768254 |52.892545 |-1.775278 |
| 1000359  | Link Number 2     |52.894892 |-1.780513 |52.894306 |-1.774793 |
| 1000279  | Link Number 3     |52.894306 |-1.774793 |52.895000 |-1.765273 |
| 1000258  | Link Number 4     |52.895000 |-1.765273 |52.895500 |-1.755278 |
| 1000255  | Link Number 5     |52.895500 |-1.755278 |52.896500 |-1.745278 |
| 1000555  | Link Number 6     |52.896500 |-1.745278 |52.897250 |-1.735278 |
----------------------------------------------------------------------------

Sections表就像这样,

Sections Table
-----------------------------------------------------------------------------
|    id    | Description    | fromLat    | fromLng    | toLat    | toLng    |
-----------------------------------------------------------------------------
| 625      | Section 1      | 52.893598  | -1.775120  | 52.885053|-1.756409 |
| 713      | Section 2      | 52.897273  | -1.788324  | 52.898285|-1.724721 |
| ...      | ...            | ...        | ...        | ...      | ...      |
| ...      | ...            | ...        | ...        | ...      | ...      |
-----------------------------------------------------------------------------

我想运行一个查询,它给出了一个部分涵盖的所有链接。因此,如果我说第2节中有多少链接,我应该收到lat / lng部分信息所涵盖的所有链接。

P.S。请注意,章节比链接长...任何帮助!

1 个答案:

答案 0 :(得分:2)

你用join做到这一点,只是条件是不等式而不是等式。目前还不清楚您是想要部分覆盖还是全覆盖。以下是部分报道的示例:

select s.*, l.*
from sections s join
     links l
     on (l.startlat < s.tolat and l.endlast > s.fromlat) and
        (l.startlong < s.tolong and l.endlong > s.fromlong);