Создание связей

Вопросы общего характера по ГИС и дистанционному зондированию, не связанные с конкретным ПО.
Ответить
me1623
Интересующийся
Сообщения: 24
Зарегистрирован: 04 мар 2010, 16:16
Репутация: 0

Создание связей

Сообщение me1623 » 04 мар 2010, 16:33

Как создать связь между двумя таблицами по двум полям или столбцам? Пример: в районах есть одинаковые населенные пункты, как создать связь сначала по районам, а потом по населенным пунктам? Помогите!!!!!!!!!!!!! :oops:

Аватара пользователя
nadiopt
Гуру
Сообщения: 4744
Зарегистрирован: 29 янв 2009, 13:27
Репутация: 495
Ваше звание: хрюкало
Откуда: Санкт-Петербург
Контактная информация:

Re: Создание связей

Сообщение nadiopt » 04 мар 2010, 16:36

1. в какой программе
2. что имеется в виду под "сначала по районам"? одинаковые районы связать чтоль?
3. зачем это нужно?
ин гроссен фамилен нихт клювен клац клац

Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: Создание связей

Сообщение Mavka » 04 мар 2010, 16:46

Для числовых полей я делал примерно так:

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

WHERE (table_1.id1*1000 + table_1.id2) = (table_2.id1*1000 + table_2.id2) 
а вот как со строками сделать "идеологически верно" не знаю, вряд ли подобный вариант будет быстрым
лангольеры под окном жрали время ом-ном-ном

pooperec
Интересующийся
Сообщения: 30
Зарегистрирован: 02 апр 2009, 11:12
Репутация: 0

Re: Создание связей

Сообщение pooperec » 04 мар 2010, 16:58

SQL: INNER (OUTER LEF/RIGHT) JOIN...
ArcMap: Join (spatial/attribute)...

Не?

Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Re: Создание связей

Сообщение Boris » 05 мар 2010, 02:30

без указания исходного продукта все советы могут быть далеки от реальности. для символьных полей конкатенация работает не хуже сложения для чисел:
WHERE (table_1.id1 & table_1.id2) = (table_2.id1 & table_2.id2)
что в прочем не противоречит ни одному и выше данных советов.
В ANSI SQL - это стандартный JOIN со связкой через логический оператор AND.
В Mapinfo - просто связка двух таблиц через логический оператор AND.
В других пакетах - все зависит от пакета.

Может проблема была не том как связать, а что связать? На пример, названия в разных регистрах или с ошибками? Тогда, это - совершенно другая задача. Но в общем случае никто с "районами" не связывается - их заменяют числами из отдельного классификатора.

Аватара пользователя
Olga_@@@
Гуру
Сообщения: 715
Зарегистрирован: 24 фев 2009, 15:42
Репутация: 0
Ваше звание: городошник
Откуда: Екатеринбург
Контактная информация:

Re: Создание связей

Сообщение Olga_@@@ » 05 мар 2010, 07:02

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

В реале видела базы данных, в которых некоторые таблицы связывались по составному ключу из 6 полей
У меня из Apple дома только компот.

me1623
Интересующийся
Сообщения: 24
Зарегистрирован: 04 мар 2010, 16:16
Репутация: 0

Re: Создание связей

Сообщение me1623 » 05 мар 2010, 10:56

В ArcMap, есть слой населенных пунктов, к нему надо подвязать таблицу, но населенный пункты же в разных районах могут иметь одно имя. В этом и заключается проблема!

self-improving
Активный участник
Сообщения: 144
Зарегистрирован: 18 дек 2009, 15:36
Репутация: 4
Откуда: Златоглавая

Re: Создание связей

Сообщение self-improving » 05 мар 2010, 11:08

Собственно, Olga_@@@ вам ответила.
Создаете новое поле и в нем вычисляете "составной ключ". Тип поля - String.
В калькуляторе поля задаете что-то типа [Name1] & " - " & [Name2]

me1623
Интересующийся
Сообщения: 24
Зарегистрирован: 04 мар 2010, 16:16
Репутация: 0

Re: Создание связей

Сообщение me1623 » 05 мар 2010, 12:29

self-improving писал(а):Собственно, Olga_@@@ вам ответила.
Создаете новое поле и в нем вычисляете "составной ключ". Тип поля - String.
В калькуляторе поля задаете что-то типа [Name1] & " - " & [Name2]
Спасибо! Буду пробовать так!

me1623
Интересующийся
Сообщения: 24
Зарегистрирован: 04 мар 2010, 16:16
Репутация: 0

Re: Создание связей

Сообщение me1623 » 05 мар 2010, 12:32

nadiopt писал(а):1. в какой программе
2. что имеется в виду под "сначала по районам"? одинаковые районы связать чтоль?
3. зачем это нужно?
В ArcMap. Для объединения слоя населенные пункты с таблицей Excel.

Аватара пользователя
Olga_@@@
Гуру
Сообщения: 715
Зарегистрирован: 24 фев 2009, 15:42
Репутация: 0
Ваше звание: городошник
Откуда: Екатеринбург
Контактная информация:

Re: Создание связей

Сообщение Olga_@@@ » 05 мар 2010, 19:26

Создаете новое поле и в нем вычисляете "составной ключ".
Нет я не это имела в виду. Таблицы можно связывать без создания нового поля. Надо просто назначить комбинацию полей, совокупность значений которых будет уникальна для вашей базы.

me1623, я не работала в ArcMap (только в AutoCAD Map и Civil), поэтому извините, что попытаюсь показать на том, что есть под рукой (названия полей условные).
Добавлю: в данном случае БЛОК это центроид площадного объекта, к которому привязана таблица с атрибутивной информацией. Соответственно Атрибут 1, Атрибут 2, Атрибут 3 - названия полей этой таблицы (выбираются из выпадающего списка). Ключ 1, Ключ 2, Ключ 3 - названия полей связываемой таблицы (назначаются в шаблоне связи). При совпадении значений ([Ключ 1 = Атрибут 1] и [Ключ 2 = Атрибут 2] и [Ключ 3 = Атрибут 3]) образуется связь между таблицами. При этом значение любого из этих полей может повторяться, уникальной должна быть только их комбинация.
Например:
Ключ 1 = Атрибут 1 = Название населенного пункта
Ключ 2 = Атрибут 2 = Название улицы
Ключ 3 = Атрибут 3 = Номер строения

На картинке ниже показано автокадовское окно генерации связей, но наверно в ArcMap тоже есть что-то близкое по смыслу.
Еще раз извините, что пример не из ArcMap
Вложения
05.013.png
05.013.png (9.2 КБ) 14181 просмотр
У меня из Apple дома только компот.

me1623
Интересующийся
Сообщения: 24
Зарегистрирован: 04 мар 2010, 16:16
Репутация: 0

Re: Создание связей

Сообщение me1623 » 09 мар 2010, 08:08

Olga_@@@ писал(а):
Создаете новое поле и в нем вычисляете "составной ключ".
Нет я не это имела в виду. Таблицы можно связывать без создания нового поля. Надо просто назначить комбинацию полей, совокупность значений которых будет уникальна для вашей базы.

me1623, я не работала в ArcMap (только в AutoCAD Map и Civil), поэтому извините, что попытаюсь показать на том, что есть под рукой (названия полей условные).
Добавлю: в данном случае БЛОК это центроид площадного объекта, к которому привязана таблица с атрибутивной информацией. Соответственно Атрибут 1, Атрибут 2, Атрибут 3 - названия полей этой таблицы (выбираются из выпадающего списка). Ключ 1, Ключ 2, Ключ 3 - названия полей связываемой таблицы (назначаются в шаблоне связи). При совпадении значений ([Ключ 1 = Атрибут 1] и [Ключ 2 = Атрибут 2] и [Ключ 3 = Атрибут 3]) образуется связь между таблицами. При этом значение любого из этих полей может повторяться, уникальной должна быть только их комбинация.
Например:
Ключ 1 = Атрибут 1 = Название населенного пункта
Ключ 2 = Атрибут 2 = Название улицы
Ключ 3 = Атрибут 3 = Номер строения

На картинке ниже показано автокадовское окно генерации связей, но наверно в ArcMap тоже есть что-то близкое по смыслу.
Еще раз извините, что пример не из ArcMap
Спасибо за помощь, но в ArcMap такого нет, по крайне мере я не знаю. Да там есть создание связи и соединения, но только по одному полю, в этом и состоит проблема. Но все равно большое спасибо!!!! :D

self-improving
Активный участник
Сообщения: 144
Зарегистрирован: 18 дек 2009, 15:36
Репутация: 4
Откуда: Златоглавая

Re: Создание связей

Сообщение self-improving » 09 мар 2010, 10:12

Olga_@@@, наверное, поняла вас неправильно именно потому, что разговор был про ArcMap. Ну я и додумала за вас :)

Аватара пользователя
Olga_@@@
Гуру
Сообщения: 715
Зарегистрирован: 24 фев 2009, 15:42
Репутация: 0
Ваше звание: городошник
Откуда: Екатеринбург
Контактная информация:

Re: Создание связей

Сообщение Olga_@@@ » 09 мар 2010, 15:02

Да, понять-то поняла.. просто отвечать начала раньше, чем появилось уточнение про ArcMap. И по-надеялась, что там тоже есть подобные возможности. А, если нет, тогда на самом деле придется создавать новое поле и собирать в нем новый ключ из значений нескольких полей. Хотя я стараюсь без крайней необходимости не создавать новые поля в исходных таблицах. Но, в каде мне этих 3-х ключей тоже часто не хватает.
У меня из Apple дома только компот.

me1623
Интересующийся
Сообщения: 24
Зарегистрирован: 04 мар 2010, 16:16
Репутация: 0

Re: Создание связей

Сообщение me1623 » 09 мар 2010, 15:29

Да когда есть связь по нескольким полям это очень удобно, а здесь то ли не доработка, то ли я еще не нашла то что мне надо.

Ответить

Вернуться в «Общие вопросы»

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

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