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

Не знаете, где задать вопрос? Задавайте здесь.
Ответить
cskq
Новоприбывший
Сообщения: 2
Зарегистрирован: 30 сен 2014, 17:00
Репутация: 0

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

Сообщение 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
Мапинфо считает не правильным по причине не согласования таблиц. ЧЯДНТ?
Заранее спасибо.
Аватара пользователя
Игорь Белов
Гуру
Сообщения: 2241
Зарегистрирован: 04 янв 2011, 22:00
Репутация: 1514
Откуда: Казань

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

Сообщение Игорь Белов »

Если я правильно помню, MapInfo не принимает в Join больше двух таблиц. Объединять несколько таблиц можно только последовательно, попарно.
В общем, придётся создать временную таблицу p12 как Append p1 + p2 и сделать первую выборку точек. Повторить независимо для p1 + p3.
The purpose of computing is insight, not numbers
Аватара пользователя
ginpetr
Завсегдатай
Сообщения: 385
Зарегистрирован: 21 июн 2011, 12:07
Репутация: 140
Откуда: Орск
Контактная информация:

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

Сообщение ginpetr »

Обновить колонку таблицы t1 добавить временную колонку из таблицы p1 значение из колонки id (я понимаю, что они не нулевые) объединение по пересечению. И также для p2, p3. Выбрать из t1 записи укоторых все три временных колонки не равны нулю. Можно ещё пофантазировать с обновлением колонки, но принцип такой. Это если с напрямую запросом не получится...
cskq
Новоприбывший
Сообщения: 2
Зарегистрирован: 30 сен 2014, 17:00
Репутация: 0

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

Сообщение cskq »

Спасибо, я поняла.
Жалко, конечно.
Екатерина2016
Новоприбывший
Сообщения: 10
Зарегистрирован: 24 апр 2018, 20:13
Репутация: 0
Откуда: челябинск

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

Сообщение Екатерина2016 »

Добрый вечер, нужна помощь. Ситуация. Есть таблица с 56000 точек, имеется семантическая база, id - содержит порядковые номера. Подскажите как можно составить запрос, чтобы из этого количества точек выбрать только те, которые кратны 100 (например 100,200.... 51100, 51200)
trir
Гуру
Сообщения: 5355
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1021
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

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

Сообщение trir »

wher id like '%00'
Екатерина2016
Новоприбывший
Сообщения: 10
Зарегистрирован: 24 апр 2018, 20:13
Репутация: 0
Откуда: челябинск

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

Сообщение Екатерина2016 »

trir, чего то у меня не получается, говорит переменная wherе - не определена((
Аватара пользователя
Игорь Белов
Гуру
Сообщения: 2241
Зарегистрирован: 04 янв 2011, 22:00
Репутация: 1514
Откуда: Казань

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

Сообщение Игорь Белов »

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

Select * From MyBigTable Where id = Int( id / 100 ) * 100
Вложения
img_20180424_210135.png
img_20180424_210135.png (4.09 КБ) 10505 просмотров
The purpose of computing is insight, not numbers
freeExec
Гуру
Сообщения: 1195
Зарегистрирован: 23 апр 2011, 10:32
Репутация: 205
Откуда: Ульяновск

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

Сообщение freeExec »

Или

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

id % 100 = 0
Аватара пользователя
Игорь Белов
Гуру
Сообщения: 2241
Зарегистрирован: 04 янв 2011, 22:00
Репутация: 1514
Откуда: Казань

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

Сообщение Игорь Белов »

Ребята, это же MapInfo. От SQL там одно название.

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

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

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

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

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

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

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

id = Int( id / 100 ) * 100
The purpose of computing is insight, not numbers
Екатерина2016
Новоприбывший
Сообщения: 10
Зарегистрирован: 24 апр 2018, 20:13
Репутация: 0
Откуда: челябинск

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

Сообщение Екатерина2016 »

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

Вернуться в «Я новичок!»

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

Сейчас этот форум просматривают: Ahrefs [Bot] и 1 гость