Как работает инструмент Соединить таблицы Info (набор инструментов Покрытие)
Инструмент Соединить таблицы Info объединяет два файла данных INFO. В выходной таблице Info объединяются и определения полей и значения из обоих файлов (см. раздел Пример ниже).
Выходная таблица Info образуется путем вставки определений полей из присоединяемой таблицы Info после заданного начального поля входной таблицы Info. Добавляются только те поля присоединяемой таблицы Info, которых нет во входной таблице Info. Когда в обоих файлах встречается одинаковое имя поля, приоритет имеют определение и значения входной таблицы Info.
Значения полей объединяются на основе логики связи INFO. Запись в присоединяемой таблице Info сопоставляется записи входной таблицы Info, если они имеют одинаковые значения в поле связи. В этом случае значения полей обеих записей копируются в выходную таблицу Info.
Тип связи определяет метод сопоставления записей. Процесс сопоставления при использовании опций LINEAR и ORDERED может повлечь поиск во всей присоединяемой таблице Info записи, значение поля связи которой совпадает со значением поля связи в данной записи входной таблицы Info. Для каждой записи во входной таблице Info выполняется один поиск в присоединяемой таблице Info. Если задана опция LINEAR, используется последовательный поиск, если задана опция ORDERED, используется бинарный поиск. Если присоединяемая таблица Info имеет большой размер, опция ORDERED обычно позволяет ускорить поиск. Чтобы использовать опцию ORDERED, присоединяемую таблицу Info необходимо отсортировать по полю связи в порядке возрастания значений,
Если используется опция LINK, поле связи должно быть только во входной таблице Info. Поле связи в каждой записи входной таблицы Info будет связано с номером присоединяемой записи в присоединяемой таблице Info. Поскольку поиск для сопоставления значений поля связи не производится, соединение выполняется быстро.
В большинстве случаев входная и присоединяемая таблицы Info должны быть организованы так, чтобы каждой записи в одном из файлов соответствовала одна и только одна запись в другом. Если такого однозначного соответствия нет, возможны следующие варианты:
- Запись присоединяемой таблицы Info может соответствовать нескольким записям входной таблицы Info. В этом случае к каждой записи входной таблицы будет присоединена только одна из записей присоединяемой таблицы Info. Данные остальных сопоставленных записей в выходную таблицу Info не войдут. Выбор записи в этом случае может зависеть от того, индексировано или нет поле связи: если поле индексировано, нет гарантии, что будет взята первая найденная запись.
- Записи входной таблицы Info нельзя сопоставить ни одну из записей присоединяемой таблицы Info. В этом случае соответствующая запись выходной таблицы Info будет содержать 0 или пустые значения в полях присоединяемой таблицы Info.
- Запись присоединяемой таблицы Info соответствует нескольким записям входной таблицы Info. В этом случае запись присоединяемой таблицы Info присоединяется к каждой соответствующей записи входной таблицы Info. В выходной таблице Info данные будут повторяться.
- Запись присоединяемой таблицы Info не соответствует ни одной записи входной таблицы Info. В этом случае она не присоединяется, и в выходную таблицу Info ее данные не войдут.
Пример:
Использование: JOINITEM <in_info_table> <join_info_table> <out_info_table> <relate_item> {start_item} {LINEAR | ORDERED | LINK}
EXCOV.PAT перед JOINITEM:
RECNO AREA PERIMETER EXCOV# EXCOV-ID 1 00028176.00* 40,005.500 1 0 2 8881,878.000 13,950.113 2 2 3 8917,384.000 20,539.754 3 1 4 33996880.000 32,816.500 4 3 5 15326114.000 16,342.805 5 5 6 4163,639.000 8,161.073 6 4 7 20812064.000 20,337.066 7 6 8 7930,208.000 11,073.945 8 7
EXCOV.CODE:
RECNO EXCOV-ID CLASS SUIT SOIL 1 2 A 3 EMS 2 1 B 0 DH 3 3 A 7 SDL 4 5 B 2 EAS 5 4 C 0 RO 6 6 B 4 WNB 7 7 A 3 EMS
EXCOV.PAT после JOINITEM:
RECNO AREA PERIMETER EXCOV# EXCOV-ID CLASS SUIT SOIL 1 00028176.00* 40,005.500 1 0 0 0 2 8881,878.000 13,950.113 2 2 A 3 EMS 3 8917,384.000 20,539.754 3 1 B 0 EDH 4 33996880.000 32,816.500 4 3 A 7 SDL 5 15326114.000 16,342.805 5 5 B 2 EAS 6 4163,639.000 8,161.073 6 4 C 0 RO 7 20812064.000 20,337.066 7 6 B 4 WNB 8 7930,208.000 11,073.945 8 7 A 3 EMS