
Создание связей
-
- Интересующийся
- Сообщения: 24
- Зарегистрирован: 04 мар 2010, 16:16
- Репутация: 0
Создание связей
Как создать связь между двумя таблицами по двум полям или столбцам? Пример: в районах есть одинаковые населенные пункты, как создать связь сначала по районам, а потом по населенным пунктам? Помогите!!!!!!!!!!!!! 

- nadiopt
- Гуру
- Сообщения: 4744
- Зарегистрирован: 29 янв 2009, 13:27
- Репутация: 495
- Ваше звание: хрюкало
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Создание связей
1. в какой программе
2. что имеется в виду под "сначала по районам"? одинаковые районы связать чтоль?
3. зачем это нужно?
2. что имеется в виду под "сначала по районам"? одинаковые районы связать чтоль?
3. зачем это нужно?
ин гроссен фамилен нихт клювен клац клац
- Mavka
- Гуру
- Сообщения: 2060
- Зарегистрирован: 14 мар 2008, 17:36
- Репутация: 9
Re: Создание связей
Для числовых полей я делал примерно так:
а вот как со строками сделать "идеологически верно" не знаю, вряд ли подобный вариант будет быстрым
Код: Выделить всё
WHERE (table_1.id1*1000 + table_1.id2) = (table_2.id1*1000 + table_2.id2)
лангольеры под окном жрали время ом-ном-ном
-
- Интересующийся
- Сообщения: 30
- Зарегистрирован: 02 апр 2009, 11:12
- Репутация: 0
Re: Создание связей
SQL: INNER (OUTER LEF/RIGHT) JOIN...
ArcMap: Join (spatial/attribute)...
Не?
ArcMap: Join (spatial/attribute)...
Не?
-
- Гуру
- Сообщения: 4231
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: -344969098
- Откуда: Париж
Re: Создание связей
без указания исходного продукта все советы могут быть далеки от реальности. для символьных полей конкатенация работает не хуже сложения для чисел:
WHERE (table_1.id1 & table_1.id2) = (table_2.id1 & table_2.id2)
что в прочем не противоречит ни одному и выше данных советов.
В ANSI SQL - это стандартный JOIN со связкой через логический оператор AND.
В Mapinfo - просто связка двух таблиц через логический оператор AND.
В других пакетах - все зависит от пакета.
Может проблема была не том как связать, а что связать? На пример, названия в разных регистрах или с ошибками? Тогда, это - совершенно другая задача. Но в общем случае никто с "районами" не связывается - их заменяют числами из отдельного классификатора.
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: Создание связей
Создайте составные ключи. Ключ может состоять из нескольких полей, каждое из которых может содержать повторяющиеся значения, при этом сочетание значений ключевых полей должно быть уникальным.Как создать связь между двумя таблицами по двум полям или столбцам? Пример: в районах есть одинаковые населенные пункты, как создать связь сначала по районам, а потом по населенным пунктам?
В реале видела базы данных, в которых некоторые таблицы связывались по составному ключу из 6 полей
У меня из Apple дома только компот.
-
- Интересующийся
- Сообщения: 24
- Зарегистрирован: 04 мар 2010, 16:16
- Репутация: 0
Re: Создание связей
В ArcMap, есть слой населенных пунктов, к нему надо подвязать таблицу, но населенный пункты же в разных районах могут иметь одно имя. В этом и заключается проблема!
-
- Активный участник
- Сообщения: 144
- Зарегистрирован: 18 дек 2009, 15:36
- Репутация: 4
- Откуда: Златоглавая
Re: Создание связей
Собственно, Olga_@@@ вам ответила.
Создаете новое поле и в нем вычисляете "составной ключ". Тип поля - String.
В калькуляторе поля задаете что-то типа [Name1] & " - " & [Name2]
Создаете новое поле и в нем вычисляете "составной ключ". Тип поля - String.
В калькуляторе поля задаете что-то типа [Name1] & " - " & [Name2]
-
- Интересующийся
- Сообщения: 24
- Зарегистрирован: 04 мар 2010, 16:16
- Репутация: 0
Re: Создание связей
Спасибо! Буду пробовать так!self-improving писал(а):Собственно, Olga_@@@ вам ответила.
Создаете новое поле и в нем вычисляете "составной ключ". Тип поля - String.
В калькуляторе поля задаете что-то типа [Name1] & " - " & [Name2]
-
- Интересующийся
- Сообщения: 24
- Зарегистрирован: 04 мар 2010, 16:16
- Репутация: 0
Re: Создание связей
В ArcMap. Для объединения слоя населенные пункты с таблицей Excel.nadiopt писал(а):1. в какой программе
2. что имеется в виду под "сначала по районам"? одинаковые районы связать чтоль?
3. зачем это нужно?
- Olga_@@@
- Гуру
- Сообщения: 715
- Зарегистрирован: 24 фев 2009, 15:42
- Репутация: 0
- Ваше звание: городошник
- Откуда: Екатеринбург
- Контактная информация:
Re: Создание связей
Нет я не это имела в виду. Таблицы можно связывать без создания нового поля. Надо просто назначить комбинацию полей, совокупность значений которых будет уникальна для вашей базы.Создаете новое поле и в нем вычисляете "составной ключ".
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 (9.2 КБ) 14181 просмотр
У меня из Apple дома только компот.
-
- Интересующийся
- Сообщения: 24
- Зарегистрирован: 04 мар 2010, 16:16
- Репутация: 0
Re: Создание связей
Спасибо за помощь, но в ArcMap такого нет, по крайне мере я не знаю. Да там есть создание связи и соединения, но только по одному полю, в этом и состоит проблема. Но все равно большое спасибо!!!!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

-
- Активный участник
- Сообщения: 144
- Зарегистрирован: 18 дек 2009, 15:36
- Репутация: 4
- Откуда: Златоглавая
Re: Создание связей
Olga_@@@, наверное, поняла вас неправильно именно потому, что разговор был про ArcMap. Ну я и додумала за вас 

- Olga_@@@
- Гуру
- Сообщения: 715
- Зарегистрирован: 24 фев 2009, 15:42
- Репутация: 0
- Ваше звание: городошник
- Откуда: Екатеринбург
- Контактная информация:
Re: Создание связей
Да, понять-то поняла.. просто отвечать начала раньше, чем появилось уточнение про ArcMap. И по-надеялась, что там тоже есть подобные возможности. А, если нет, тогда на самом деле придется создавать новое поле и собирать в нем новый ключ из значений нескольких полей. Хотя я стараюсь без крайней необходимости не создавать новые поля в исходных таблицах. Но, в каде мне этих 3-х ключей тоже часто не хватает.
У меня из Apple дома только компот.
-
- Интересующийся
- Сообщения: 24
- Зарегистрирован: 04 мар 2010, 16:16
- Репутация: 0
Re: Создание связей
Да когда есть связь по нескольким полям это очень удобно, а здесь то ли не доработка, то ли я еще не нашла то что мне надо.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость