www.map-info.ru :: Просмотр темы - SQL - Выборка из нескольких таблиц?
                               РќР° главную страницу сайта

 
                                
ВходВход    РегистрацияРегистрация    ПрофильПрофиль    ПользователиПользователи    ГруппыГруппы    FAQFAQ    ПоискПоиск  
На страницу 1, 2  След.
 
   Список форумов www.map-info.ru | Форум - программирование в среде MapInfo Добавить ответ
Предыдущая тема :: Следующая тема  
Автор Сообщение
agentbond007



Зарегистрирован: 08.12.2009
Сообщения: 56

СообщениеДобавлено: Пн Мар 01, 2010 10:41 am    Заголовок сообщения: SQL - Выборка из нескольких таблиц? Добавить ответ со ссылкой на данный текст

Здравствуйте
Таблица1 - векторный слой с объектами (без атрибутов)
Таблица2 - атрибутивная информация
Как соединить эти таблицы, отображать в векторном слое и при необходимости редактировать векторные объекты?
Обе таблицы хранятся в Oracle.
Пробовал так:
map from Таблица1, Таблица2 where Таблица1.id = Таблица2.id
id - условное обозначение общего ключа.
Результат: Ошибка - "Таблица2 - не содержит графических объектов"
Пробовал через JOIN - MapInfo его не переваривает =((
Подскажите как объединить? Idea
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
FedorinoFF



Зарегистрирован: 01.02.2007
Сообщения: 272
Откуда: Санкт-Петербург

СообщениеДобавлено: Пн Мар 01, 2010 11:49 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

....
map from Таблица1, Таблица2 where Таблица1.id = Таблица2.id
...

Сильно. Какая версия Mapbasic?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
agentbond007



Зарегистрирован: 08.12.2009
Сообщения: 56

СообщениеДобавлено: Вт Мар 02, 2010 3:16 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Версия MapBasic - 9.5
(MapInfo - 9.5, Oracle 10g XE)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Arhara



Зарегистрирован: 18.02.2009
Сообщения: 400
Откуда: Moscow, RF

СообщениеДобавлено: Вт Мар 02, 2010 6:28 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

разве язык SQL содержит оператор MAP?
Если это вопрос по Mapinfo, а не Oracle, то писать надо
Код:

Select * from Таблица1, Таблица2 where Таблица1.id = Таблица2.id

Редактировать сможете 1-ю таблицу. Добавлять записи - не сможете. Атрибутику сможете редактировать у обеих таблиц.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
agentbond007



Зарегистрирован: 08.12.2009
Сообщения: 56

СообщениеДобавлено: Вт Мар 02, 2010 8:20 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Правильно в SQL оператора "Map" нету я говорил про команду Map в программе MapInfo, например так "map from Таблица1" - в первоначальном виде. Все команды я выполняю в окне MapBasic.

Упростим ситуацию исключив сервер БД.
Вопрос:
1) Как мне пристыковать к ГЕО объектам (Таблица1) атрибутивку (таблица2) по общему полю ID и показать картой?
2) Иметь возможность добавления/редактирования и удаления ГЕО - объектов в полученной из вопроса1 таблице?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
FedorinoFF



Зарегистрирован: 01.02.2007
Сообщения: 272
Откуда: Санкт-Петербург

СообщениеДобавлено: Вт Мар 02, 2010 2:23 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

1. смотрим доку по Mapbasic 9.5
-------------
Map statement
Purpose
Opens a new Map window. You can issue this statement from the MapBasic Window in MapInfo Professional.

Syntax
Map From table [ , table ... ]
[ Position ( x, y ) [ Units paperunits ] ]
[ Width window_width [ Units paperunits ] ]
[ Height window_height [ Units paperunits ] ]
[ { Min | Max } ]
-------------
предложения where не видно, как и ожидалось...

2. Mapinfo умеет работать с одной таблицей БД в плане редактирования данных, следовательно, если надо объединить данные из двух таблиц БД, то и организовать это надо на стороне БД, т.е. например, создать VIEW.
Если надо редактировать даные, то на View надо навесить триггеры и должно быть счастье... Его не может не быть :-)))
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
agentbond007



Зарегистрирован: 08.12.2009
Сообщения: 56

СообщениеДобавлено: Ср Мар 03, 2010 3:35 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Спасибо, помогли разобраться!
Ухожу в сторону БД клепать "Правильный" вьюшник с триггерами Very Happy
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
FedorinoFF



Зарегистрирован: 01.02.2007
Сообщения: 272
Откуда: Санкт-Петербург

СообщениеДобавлено: Ср Мар 03, 2010 11:39 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

agentbond007 писал(а):
Спасибо, помогли разобраться!
Ухожу в сторону БД клепать "Правильный" вьюшник с триггерами :D


Отчет о проделанной работе приветствуется ;-)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
agentbond007



Зарегистрирован: 08.12.2009
Сообщения: 56

СообщениеДобавлено: Чт Мар 04, 2010 9:38 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Промежуточный отчёт Very Happy

Создал вьюшку где перечислил все поля из ГЕО таблицы:
MI_Prinx, MI_Style, Geoloc + поля из таблицы атрибутов.
Открываю её в MapInfo - выдаёт ошибку:
"Неподдерживаемый тип данных для колонки Geoloc"
Далее открывается список с черными полями без данных
и без карты Sad
Geoloc - поле с координатами объекта - видимо его нужно как то скрывать? Rolling Eyes


Последний раз редактировалось: agentbond007 (Пт Мар 11, 2011 5:12 am), всего редактировалось 1 раз
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
FedorinoFF



Зарегистрирован: 01.02.2007
Сообщения: 272
Откуда: Санкт-Петербург

СообщениеДобавлено: Чт Мар 04, 2010 10:57 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

надо посмотреть как создается таблица в оракле при заливке ее EasyLoader-ом. (кажется поле OBJ (GEOLOC) должно быть первым).
дальше, надо посмотреть как регистриться таблица в служебной таблице в схеме MAPINFO (не помню как она называется, но в документации в разделе что-то "создание удаленных таблиц" или "RDBMS Catalog" про это написано). сам давно этим занимался, так что слегка подзабыл
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
FedorinoFF



Зарегистрирован: 01.02.2007
Сообщения: 272
Откуда: Санкт-Петербург

СообщениеДобавлено: Чт Мар 04, 2010 10:59 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Нашел свои старые записи...
--------
При загрузке данных Mapinfo в Oracle, в нем автоматически создается схема Mapinfo, пользователь mapinfo (пароль mapinfo). В схеме Mapinfo создается служебная таблица MAPINFO_MAPCATALOG (см. документацию по Mapinfo, SpatialWare for MSSQL).
-----
может пригодиться. Информации в инете крайне мало, приходилось самому методом тыка и усилия мысли...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
agentbond007



Зарегистрирован: 08.12.2009
Сообщения: 56

СообщениеДобавлено: Чт Мар 04, 2010 11:47 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

С заливкой данных в Oracle EasyLoader`ом проблем не возникло. При заливке программа сама добавляет нужные поля такие как: MI_Prinx, Geoloc... + я создал в БД таблицу с атрибутивкой и указал каждой строке MI_Prinx (пока ручками). В MapInfo эти таблицы из Oracle открываются без проблем. В БД создал вьюшку из этих 2-х таблиц, при открытии MapInfo ругается. Я так понимаю эту вьюшку нужно зарегить в мап-каталоге? Rolling Eyes
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Андрей Могильный



Зарегистрирован: 21.03.2006
Сообщения: 864

СообщениеДобавлено: Чт Мар 04, 2010 6:57 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Вам нужна команда Server Link Table, подробнее в доке.
Оттуда:
Цитата:
SQL Query Syntax
The MapInfo keyword OBJECT may be used to reference the spatial column(s) within the SQL Query. MapInfo translates the keyword OBJECT into the appropriate spatial column(s). A SELCT*FROM tablename will always pick up the spatial columns, but if you want to specify a subset of columns, use the keywords OBJECT. For example:
SELECT col1, col2, OBJECT

FROM tablename
Will download the two columns plus the spatial object. This syntax will work for any database that MapInfo supports.

У вас Oracle, возможно все получится. На PostGIS к сожалению у меня не получилось :(
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Paule



Зарегистрирован: 05.05.2010
Сообщения: 5

СообщениеДобавлено: Ср Май 05, 2010 6:31 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Та же проблема - просто таблица с geoloc-полем в mapInfo открывается, а вьюха, созданная на ее основе - нет. Поле geoloc естественно во вьюхе участвует. Вьюху зарегил и в mapinfo.mapinfo_mapcatalog и в mdsys.sdo_geom_metadata_table - не помогло.
Хелп!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
FedorinoFF



Зарегистрирован: 01.02.2007
Сообщения: 272
Откуда: Санкт-Петербург

СообщениеДобавлено: Пт Май 07, 2010 9:27 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Если не ошибаюсь, то где-то проскакивало требование что поле с графическим объектом (Geoloc) должно быть первым в списке полей. Может это поможет.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
   Список форумов www.map-info.ru | Форум - программирование в среде MapInfo Добавить ответ
На страницу 1, 2  След.
Страница 1 из 2

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Top.Mail.Ru