Приветствую всех. Прошу помощи.
Есть 2 таблицы. Задача поставить в соответствие записи двух таблиц
INVOICE и
BOXES. Ну это легко по "ключевым" полям (колонки "A" и "B" обеих таблиц, комбинированное
ключевое поле). Но это присказка.
Есть небольшая проблемка: вторая таблица "
BOXES" приходит без поля "B" и прежде необходимо "восстановить" это поле, используя первую таблицу "
INVOICE".
Если делать вручную должно получится как в третьей таблице
BOXES-NEW. Для автоматизации ничего другого как перебор последовательно каждой записи
INVOICE и применения что-то типа фильтра по полям "A" и "C" во второй таблице с последующими "анализом" количества, в голову не приходит. Никакие другие способы, т.е. через запросы SQL не работают, потому что записи перегруппированы и перераспределены, причем "в обе стороны" (напр. записи 7 и 8 из
INVOICE сгруппированы в запись 9 второй таблицы, а запись 9 первой таблицы становится записями 11 и 12
BOXES). Алгоритм восстановления такой: смотрим первую запись первой таблицы (57078865...900003...). По ее номеру DN и товарному номеру 100417183 делаем выборку (не знаю как назвать, типа sub-recordset) во второй таблице и ищем совпадение количества в текущ. записи с количеством с одной из записей внутри этого фильтра. Если количество совпадает подставляем значение Item из
INVOICE в DN_item
BOXES. Если не находим, суммируем "беспризорников" и на втором заходе снова ищем равенство по штукам. В общем найдутся сейчас критики которые обломают. Но неужели никто с подобной задачей не сталкивался? Здесь именно задача восстановления одного из полей. Условие совпадения суммы по количеству внутри группы Deliver/Material двух таблиц выполняется строго.
http://www.sql.ru/forum/1095784/vosstanovlenie-polya-tablicy-po-drugoy-tablice