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

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

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

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

Добавлено: 04 мар 2010, 16:36
nadiopt
1. в какой программе
2. что имеется в виду под "сначала по районам"? одинаковые районы связать чтоль?
3. зачем это нужно?

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

Добавлено: 04 мар 2010, 16:46
Mavka
Для числовых полей я делал примерно так:

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

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

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

Добавлено: 04 мар 2010, 16:58
pooperec
SQL: INNER (OUTER LEF/RIGHT) JOIN...
ArcMap: Join (spatial/attribute)...

Не?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Добавлено: 05 мар 2010, 19:26
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

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

Добавлено: 09 мар 2010, 08:08
me1623
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

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

Добавлено: 09 мар 2010, 10:12
self-improving
Olga_@@@, наверное, поняла вас неправильно именно потому, что разговор был про ArcMap. Ну я и додумала за вас :)

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

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

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

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