Страница 1 из 1

SQL запросы в мапинфо

Добавлено: 30 сен 2014, 17:10
cskq
Господа, нужна помощь.
Есть четыре таблицы, назовем их t1, p1, p2 и p3.
Таблица t1 содержит точечные объекты, p1- p3 площадные.
Нужно выбрать все точечные объекты, которые попадают одновременно на объекты из p1 и p2 или на p1 и p3.
Банальное
SELECT t1.name, p1.id, p2.id, p3.id
FROM t1, p1, p2, p3
WHERE t1.obj within p1.obj AND t1.obj within p2.obj OR t1.obj within p1.obj AND t1.obj within p3.obj
Мапинфо считает не правильным по причине не согласования таблиц. ЧЯДНТ?
Заранее спасибо.

Re: SQL запросы в мапинфо

Добавлено: 30 сен 2014, 18:48
Игорь Белов
Если я правильно помню, MapInfo не принимает в Join больше двух таблиц. Объединять несколько таблиц можно только последовательно, попарно.
В общем, придётся создать временную таблицу p12 как Append p1 + p2 и сделать первую выборку точек. Повторить независимо для p1 + p3.

Re: SQL запросы в мапинфо

Добавлено: 30 сен 2014, 20:10
ginpetr
Обновить колонку таблицы t1 добавить временную колонку из таблицы p1 значение из колонки id (я понимаю, что они не нулевые) объединение по пересечению. И также для p2, p3. Выбрать из t1 записи укоторых все три временных колонки не равны нулю. Можно ещё пофантазировать с обновлением колонки, но принцип такой. Это если с напрямую запросом не получится...

Re: SQL запросы в мапинфо

Добавлено: 01 окт 2014, 09:47
cskq
Спасибо, я поняла.
Жалко, конечно.

Re: SQL запросы в мапинфо

Добавлено: 24 апр 2018, 20:30
Екатерина2016
Добрый вечер, нужна помощь. Ситуация. Есть таблица с 56000 точек, имеется семантическая база, id - содержит порядковые номера. Подскажите как можно составить запрос, чтобы из этого количества точек выбрать только те, которые кратны 100 (например 100,200.... 51100, 51200)

Re: SQL запросы в мапинфо

Добавлено: 24 апр 2018, 20:36
trir
wher id like '%00'

Re: SQL запросы в мапинфо

Добавлено: 24 апр 2018, 20:46
Екатерина2016
trir, чего то у меня не получается, говорит переменная wherе - не определена((

Re: SQL запросы в мапинфо

Добавлено: 24 апр 2018, 21:08
Игорь Белов

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

Select * From MyBigTable Where id = Int( id / 100 ) * 100

Re: SQL запросы в мапинфо

Добавлено: 24 апр 2018, 21:13
freeExec
Или

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

id % 100 = 0

Re: SQL запросы в мапинфо

Добавлено: 24 апр 2018, 21:24
Игорь Белов
Ребята, это же MapInfo. От SQL там одно название.

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

id like '%00'
придётся заменить аналогом substr():

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

Right$( Str$( id ) , 2 ) = "00"

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

id % 100 = 0
Аналога оператору % нет, заменяем "id % 100" остатком от вычитания целого числа сотен:

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

id = Int( id / 100 ) * 100

Re: SQL запросы в мапинфо

Добавлено: 25 апр 2018, 06:22
Екатерина2016
Огромное спасибо всем!!!!!! Получилось вот так - Right$( Str$( id ) , 2 ) = "00" - остальное пока не попробовала!!!!! Выручили :D