0

現在、州用の 2 つのテーブルがあり、一意の ID、州名、および州の座標を保持しています。2 つ目は、一意の ID、都市エリアの名前、およびそのエリアの座標を保持する都市エリア用です。自己交差を除外しながら、どの都市エリアが互いに交差するかを見つけようとしています (つまり、エリア A がエリア B と交差し、エリア B がエリア A と交差する場合、両方ではなく 1 つの結果のみを返します)。

私は現在コードを持っています:

SELECT s.name 
FROM urbanTable AS s, stateTable as a 
WHERE ST_Intersects(s.coords, s.coords) 
AND (a.gid != s.gid) 
GROUP BY s.name;

ただし、これは正しい量の結果を返しません。どんな助けでも大歓迎です!ありがとうございました!

4

2 に答える 2

3

gidは一意の識別子であると仮定しますurbanTable

select
    u1.name,
    u2.name
from
    urbanTable u1,
    urbantable u2
where
    u1.gid < u2.gid and -- avoid duplicating results
    ST_Intersects(u1.coords, u2.coords)
于 2013-11-03T20:31:15.117 に答える
0

ST_Intersects(s.coords, s.coords)テストするのではなくテストするので、タイプミスがあると思いますST_Intersects(s.coords, a.coords)

于 2013-11-03T20:26:21.560 に答える