MapInfo и SQL

MapInfo, MapBasic
Ответить
IVTarasenko
Новоприбывший
Сообщения: 13
Зарегистрирован: 14 окт 2010, 23:16
Репутация: 1

MapInfo и SQL

Сообщение IVTarasenko » 02 мар 2012, 23:25

Привет.
проблема в следующем: есть два слоя, один - точечные обьекты, другой-полигональные.
нужно найти все полигональные обьекты, которые пересекают минимум два точечные.
как это сделать? спасибо.

Аватара пользователя
dab
Гуру
Сообщения: 671
Зарегистрирован: 16 дек 2011, 20:02
Репутация: 170
Ваше звание: Гуру
Откуда: Москва
Контактная информация:

Re: MapInfo и SQL

Сообщение dab » 03 мар 2012, 09:04

Если есть первичный ключ (поле с уникальным значением для каждой строки) в обеих таблицах (в данном коде id), тогда можно парой запросов получить результат:

Код: Выделить всё

Select tbl_polygone.id, Count(*) from tbl_point, tbl_polygone where tbl_point.Obj Within tbl_polygone.Obj group by 1 into qTemp
Select * from tbl_polygone, qTemp where tbl_polygone.id=qTemp.id and qTemp.COL2>1 into Selection
Если первичного ключа нет - можно добавить :)

Код: Выделить всё

Alter Table "tbl_point" ( add id Integer ) Interactive
update tbl_point set id=rowid
Alter Table "tbl_polygone" ( add id Integer ) Interactive
update tbl_polygone set id=rowid

IVTarasenko
Новоприбывший
Сообщения: 13
Зарегистрирован: 14 окт 2010, 23:16
Репутация: 1

Re: MapInfo и SQL

Сообщение IVTarasenko » 04 мар 2012, 23:20

спасибо большое, попробуем :)

SergS
Активный участник
Сообщения: 120
Зарегистрирован: 14 апр 2011, 13:24
Репутация: 5
Откуда: Екатеринбург

Re: MapInfo и SQL

Сообщение SergS » 05 мар 2012, 05:14

добавьте только еще и третий запрос - непосредственно отбирающий нужные полигоны, все вместе получится вот так:

Код: Выделить всё

Select tbl_polygone.id, Count(*) from tbl_point, tbl_polygone where tbl_point.Obj Within tbl_polygone.Obj group by 1 into qTemp1 noselect
Select * from qTemp1 where COL2>1 into qTemp2 noselect
Select * from tbl_polygone where id in (select col1 from qTemp2)

dab, если ничего не изменилось, то вот этот запрос не сработает (могу ошибиться):
Select * from tbl_polygone, qTemp where tbl_polygone.id=qTemp.id and qTemp.COL2>1 into Selection
мапинфошный sql не допускает (не допускал?) временные таблицы в подобного вида запросах

Аватара пользователя
dab
Гуру
Сообщения: 671
Зарегистрирован: 16 дек 2011, 20:02
Репутация: 170
Ваше звание: Гуру
Откуда: Москва
Контактная информация:

Re: MapInfo и SQL

Сообщение dab » 06 мар 2012, 11:03

SergS писал(а): ... dab, если ничего не изменилось, то вот этот запрос не сработает (могу ошибиться):
Select * from tbl_polygone, qTemp where tbl_polygone.id=qTemp.id and qTemp.COL2>1 into Selection
мапинфошный sql не допускает (не допускал?) временные таблицы в подобного вида запросах
MapInfo 10.5 - работает. Прежде чем писать сообщение, сам проверял. :)

SergS
Активный участник
Сообщения: 120
Зарегистрирован: 14 апр 2011, 13:24
Репутация: 5
Откуда: Екатеринбург

Re: MapInfo и SQL

Сообщение SergS » 06 мар 2012, 11:25

ну, значит, я отстал...

Ответить

Вернуться в «MapInfo»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость