powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Сравнение таблиц
22 сообщений из 22, страница 1 из 1
Сравнение таблиц
    #32559499
Invisible
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть две таблицы в разных базах, которые содержат одну и ту же информацию.
При изменении одной таблицы, должны изменяться данные в другой через таблицу базы "обновления", в которой выделены только те записи, которые отсутствуют или ОТЛИЧАЮТСЯ ХОТЯ БЫ ПО ОДНОМУ ПОЛЮ .

Дык вот как бы создать табличку(данные подлежащие обновлению) пограмотнее, да пошустрее???
...
Рейтинг: 0 / 0
Сравнение таблиц
    #32559500
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
А она должна создаваться пакетно или онлайн?
...
Рейтинг: 0 / 0
Сравнение таблиц
    #32559540
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InvisibleЕсть две таблицы в разных базах, которые содержат одну и ту же информацию.
При изменении одной таблицы, должны изменяться данные в другой через таблицу базы "обновления", в которой выделены только те записи, которые отсутствуют или ОТЛИЧАЮТСЯ ХОТЯ БЫ ПО ОДНОМУ ПОЛЮ .

Дык вот как бы создать табличку(данные подлежащие обновлению) пограмотнее, да пошустрее???

если mdb/базы на sql находятся в локальной сети то крайне редко есть необходимость делать 2(две)таблицу лучше дополнительные поля- флажки

если базы разнесены то есть стандартные приемы репликации - целая отрасль науки о построении СУБД - ищи по конфе

приёмы отличаются скоростью/надежностью канала/мерами обеспечения безопасности

в идеале ставится отдельный "монитор" который все рулит
...
Рейтинг: 0 / 0
Сравнение таблиц
    #32559720
Invisible
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир СанычА она должна создаваться пакетно или онлайн?
Не совсем понял, но она явно создается не в онлайне, так что остается вариант пакетно. :)

База выходит за пределы локальной сетки.

Есть копия таблицы, подлежащей обновлению и новосозданная таблица. Нужно найти различающиеся записи.

Мои варианты:
1) SQL-прямо в построителе запроса объединяем соответствующие поля Left Join от Новой к старой таблице. Выводим F1,F2,F3,F4 поля, которые не равны соответствующим через OR
(макет) Select * From New (join там всяческий) Where F1<>P1 or F2<>P2 or F3<>P3 or f4<>p4

2)Через рекордсеты
Findfirst (F1<>P1 or F2<>P2 or F3<>P3 or f4<>p4)
If nomatch ...


Хотелось бы услышать рецензии или встречные предложения профессионалов. :)
...
Рейтинг: 0 / 0
Сравнение таблиц
    #32559723
Invisible
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1 Вариант не работает - пишет "несоответствие типов данных в условии отбора"
...
Рейтинг: 0 / 0
Сравнение таблиц
    #32559727
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Вариант 1 явно быстрее. Если несоответствие типов, значит надо что-то подправить. И плюс два селекта для записей добавленных и удаленных.
...
Рейтинг: 0 / 0
Сравнение таблиц
    #32559729
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Invisible[quot Владимир Саныч]База выходит за пределы локальной сетки.

Есть копия таблицы, подлежащей обновлению и новосозданная таблица.
я понял так что существуют 2 копии таблицы Master и Slave
территориально разнесенные

копия Slave неким образом транспортируется в ЛВС к Master
извлекается таблица рассогласования которая транспортируется в ЛВС Slave
где применяется к Slave для согласования с Master ?
(причем на вреия транспортировки изменение Slave запрещено)

правильно ли я сформулировал твою схему ?
...
Рейтинг: 0 / 0
Сравнение таблиц
    #32559748
Invisible
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Shuard: That's right. Есть хорошее решение????
...
Рейтинг: 0 / 0
Сравнение таблиц
    #32559761
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть правильное решение:
поле FLAG тип Long которое бизнес-логикой Slave ставится в -1 при любом Insert/Update и соответственно сбрасывается в 0 монитором репликации

тогда на Master стороне Where Flag = -1(True)

если сервера синхронизованы или поднята служба точного времени то ещё не помешает поле дата(время)

теперь по сути задачи
если наша таблица справочник то она всегда распространяется от Master к Slave иначе ключи сломаются
если наша таблица содержательная то получается встречная репликация её рулить очень сложно
...
Рейтинг: 0 / 0
Сравнение таблиц
    #32559777
Invisible
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Master является справочником (Slave- его копия на другом терминале). Но ключей ни в одной, ни в другой таблице нет, т. к. записи в Master-е не определены каким-то одним диапазоном.
...
Рейтинг: 0 / 0
Сравнение таблиц
    #32559819
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InvisibleMaster является справочником (Slave- его копия на другом терминале). Но ключей ни в одной, ни в другой таблице нет, т. к. записи в Master-е не определены каким-то одним диапазоном.

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

- вероятно целиком справочник нельзя пересылать из-за размера а хочется уменьшить траффик путем пересылки изменённых строк - это понятно



КАК ДЕЛАТЬ UPDATE записи в таблице не имеющей ключа ?


решение создать в Master ключ - счетчик в Slave - одноименное поле Long
+ создать в Master поле FLAG Long

при любых Insert в Master FLag поднимается =1
при любых Update в Master FLag поднимается =2
2 временные таблички : на изменение и модификацию
запрос на выборку Where Flag=1 ---> temp1
запрос на выборку Where Flag=1 ---> temp2
после построения временных таблицы Flag=0

на стороне Slave
temp1 --> Insert поле счетчика из temp1
temp2 -->Update поле счетчика идет в Where или INNER JOIN
...
Рейтинг: 0 / 0
Сравнение таблиц
    #32559822
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
редукция
Код: plaintext
1.
2.
3.
4.
запрос на выборку Where Flag= 1   ---> temp1
 
запрос на выборку Where Flag= 2   ---> temp2
 
...
Рейтинг: 0 / 0
Сравнение таблиц
    #32559856
Invisible
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShuhardКАК ДЕЛАТЬ UPDATE записи в таблице не имеющей ключа ?UPDATE на самом деле проводить особо и не надо, потому, что помимо изменения существующих записей, в Master-е могут появляться новые и уходить старые записи.
Поскольку данные в таблицах побиты на группы, то при обнаружении малейшего несоответствия в каком-либо поле одной из групп (это несоответствие может даже заключатся в разнице количества строк в пределах одной группы), все строки группы из Master копируются в temp.

Slave получает temp и удаляет из себя группы, присутствующие в temp, после чего добавляет все из temp и удаляет его.

Нужно только сформировать такой вот запрос, как запрос без подчиненных записей, только на все поля. Но это работает очень долго. Я вот и спросил есть ли другие варианты?

p.s. Да, забыл упомянуть, что Master, тоже пересоздается полностью(но это уже совсем другая история), так что флаги при изменении строк не покатят.
...
Рейтинг: 0 / 0
Сравнение таблиц
    #32559866
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
Slave получает temp и удаляет из себя группы, присутствующие в temp, после чего добавляет все из temp и удаляет его
как можно удалить запись из таблице не имея ключа/что сидит в Where ?
код пжалста !
...
Рейтинг: 0 / 0
Сравнение таблиц
    #32559868
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор
помимо изменения существующих записей, в Master-е могут появляться новые и уходить старые записи.


если нет ключа и могут появляться новые и уходить старые записи
то не существует алгоритма сравнения
НЕВОЗМОЖНО ВЫБРАТЬ СТРОКИ для дальнейшего сравнения их содержимого

ИТОГО:Ты что-то недоговариваешь - колись
а то Саныч со штурмовой винтовкой придет и хандец!
...
Рейтинг: 0 / 0
Сравнение таблиц
    #32559870
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Вот.
...
Рейтинг: 0 / 0
Сравнение таблиц
    #32559871
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShuhardКАК ДЕЛАТЬ UPDATE записи в таблице не имеющей ключа ?

А что, написать условие обновления/удаления по неключевым полям великий Кханан запрещает? :)

Код: plaintext
1.
2.
UPDATE USERS_TBL
SET street = 'Matrix aveny'
WHERE last_name = 'Smith' AND user_role = 'Agent'  

То же самое для DELETE

У меня схожая задача - совмещение данных редактируемых на разных рабочих станциях и присылаемых по почте.
Ничего лучше не придумал, кроме как сравнение по "значимым" полям.
Пользователю показываются различающиеся записи и он уже сам решает что принимать, а что нет.

Если нужен полностью автоматические режим - то можно сделать что-то похожее на Access replication. проверять дату модификации... задать приоритет данных источников и т.д.
...
Рейтинг: 0 / 0
Сравнение таблиц
    #32559886
Invisible
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelyНичего лучше не придумал, кроме как сравнение по "значимым" полям.
Вот, вот - у меня 9 полей, каждое из которых значимое - какое из них ключевое???
...
Рейтинг: 0 / 0
Сравнение таблиц
    #32559889
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВот, вот - у меня 9 полей, каждое из которых значимое - какое из них ключевое???
Все поля. Это у тебя просто составной ключ, фактически.
Только нет остальных свойств ключа - уникальности комбинации, как минимум.

У меня ситуация не так проста, как описано у тебя.
У меня фактически надо реплицировать кусок базы данных - начиная с записи отчета (основная таблица) и со всеми подчиненными таблицами и таблицами справочниками на всю глубину связей.

Получается таблиц 15 и до 5 таблиц завязанных одна на другую.
Да, забыл еще сказать про частично закольцованные связи "сам на себя".
Вот такая каракатица выходит :)
...
Рейтинг: 0 / 0
Сравнение таблиц
    #32560011
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Invisible
Вот, вот - у меня 9 полей, каждое из которых значимое - какое из них ключевое???

могут-ли повторяться идентичные наборы этих 9 полей ?
если не могут то 9 полей образуют ключ - позволяя однозначно идентифицировать запись в таблице.
если могут повторяться - то работать с ней(таблицей) через sql ,как с элементом реляционной базы крайне сложно - придётся открывать RecordSetы
и заменять INNER JOIN на свою собственную логику.
...
Рейтинг: 0 / 0
Сравнение таблиц
    #32560014
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bely
Ничего лучше не придумал, кроме как сравнение по "значимым" полям.
Пользователю показываются различающиеся записи и он уже сам решает что принимать, а что нет.

Если нужен полностью автоматические режим - то можно сделать что-то похожее на Access replication. проверять дату модификации... задать приоритет данных источников и т.д.
про Where и составной ключ понимаю.
Пытаюсь добиться от автора ответа про устройства данных - выходит туго.
От твоей задачи коренное отличие - у тебя встречная репликация с "ручным" принятием решений
У автора однонаправленное(от Master) распространение справочника - необходимость инкрементного(кумулятивного) обращения с ней не понятно!
...
Рейтинг: 0 / 0
Сравнение таблиц
    #32560015
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bely авторВот, вот - у меня 9 полей, каждое из которых значимое - какое из них ключевое???
Все поля. Это у тебя просто составной ключ, фактически.
Только нет остальных свойств ключа - уникальности комбинации, как минимум.

нет остальных свойств ключа - уникальности комбинации
Это не так ,если нельзя однозначно определить запись(уникальность) - не ПЕРВИЧНЫЙ ключ
- нельзя делать UPDATE число записей будет 0 или >1
- нельзя сравнивать строки 2-х таблиц ,если в каждой выбирается >1
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Сравнение таблиц
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]