Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 28.07.2015
Сообщений: 3

Сравнение двух таблиц с добавлением записей

30.07.2015, 13:53. Показов 3894. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Уважаемые ГУРУ Access!
Есть такая задача.
Две таблицы с текстовыми полями.

tb1 поля tb1.1; tb1.2; tb1.3-пустое текстовое поле и
tb2 поля tb2.1; tb2.2; tb2.3- поле имеет некоторое значение.

Требуется сравнить таблицы по условию tb1.1=tb2.1 и tb1.2=tb2.2.
Если условие ИСТИНА - то tb1.3 присваивается значение tb2.3.
Если в tb1 нет записи соответствующей tb2, то запись из tb2 полностью по 3 полям добавляется в tb1.

Как такое можно сотворить?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.07.2015, 13:53
Ответы с готовыми решениями:

Сравнение двух таблиц и удаление несуществующих записей в одной при сравнении с другой
Собственно говоря задача такая: Если в таблице Поставки существуют ячейки с Кодом Поставки, которых нет в таблице Приобретено, то они...

Сравнение таблиц с добавлением значении
есть две таблицы в accesse есть одинаковые столбцы adr, kv , но в 1 таблице на напротив каждой ул и квартиры стоит фио а в другой нет нужно...

Сравнение двух таблиц
Здравсвтуйте, я с access и SQL на "Вы", очень прошу помогите решить задачку - сформировать SQL запрос для Access Есть две таблицы...

5
Эксперт MS Access
26825 / 14505 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
30.07.2015, 14:55
Сделать можно 2 запросами: сначала на обновление tb1 и вторым запросом добавить недостающие из tb2 в tb1.
1 запрос
SQL
1
UPDATE tb1 SET [3]=dlookup("[3]", "tb2", "[1]='" & [1] & "'")
2 запрос
SQL
1
2
3
4
INSERT INTO tb1([1],[2],[3])
SELECT tb2.[1], tb2.[2], tb2.[3]
FROM tb2 LEFT JOIN tb1 ON tb2.[1]=tb1.[1]
WHERE tb1.[1] IS NULL
Но возникает вопрос: а зачем? Зачем нужны эти операции, если в результате Вы получите точную копию второй таблицы? Почему нельзя сразу использовать именно tb2? И возникает ощущение, что tb1 вообще не нужна. Разве нет?
1
шапоклякистка 8-го дня
 Аватар для texnik-san
3681 / 2241 / 391
Регистрация: 26.06.2015
Сообщений: 4,647
Записей в блоге: 1
30.07.2015, 16:27
Цитата Сообщение от mobile Посмотреть сообщение
Но возникает вопрос: а зачем? Зачем нужны эти операции, если в результате Вы получите точную копию второй таблицы? Почему нельзя сразу использовать именно tb2? И возникает ощущение, что tb1 вообще не нужна. Разве нет?
Я догадываюсь, кажется. Занималась когда-то подобным. Это такой аналог синхронизации.

tb1, скорее всего, это таблица, постоянно участвующая в структуре данных, со связями, индексами, зависимыми записями и т.п.

А tb2, я так предполагаю, это получаемое из какого-то внешнего источника обновление, которое подключается, из него извлекаются данные, и таблица удаляется до поступления следующего обновления.
1
0 / 0 / 0
Регистрация: 28.07.2015
Сообщений: 3
31.07.2015, 08:34  [ТС]
Спасибо за подсказку!!!
Суть задачи в том, что в tb1 и tb2 реально больше полей и значение их различны. tb2 - импорт из другой БД для других целей, из которой и надо добавить недостающие данные в tb1, т.е. синхронизировать один раз и забыть. БД достаточно объемные: tb1 - около 80 тыс., tb2 - более 100 тыс.

Добавлено через 25 минут
Не успел исправить мысль за отпущенное время.

Суть задачи в том, что в tb1 и tb2 реально больше полей и значение их различны. И tb2 - импорт из другой БД для других целей в которой кол-во записей различно. В tb2 есть записи как в в tb1, но присутствуют и такие, которых нет в tb1. В tb1 есть то, чего нет в tb2. Их трогать не нужно.
Так вот, требуется заполнить поле tb1.3 только для тех записей у которых есть брат близнец по полям tb1.1 и tb1.2 в таблице tb2 и импортировать значения полей tb2.1, 2.2., 2.3 если таких значений в tb1 нет.

Добавлено через 49 минут
Если выражаться языком формул(почти), условие отбора выглядит так:
Запрос 1.
ЕСЛИ tb1.1.=tb2.1. И tb1.2.=tb2.2. ТО tb1.3. принимает значение tb2.3. ИНАЧЕ - пропускаем
Запрос 2.
ЕСЛИ в tb1 нет того, что есть в tb2 то tb2.1.;tb2.2.;tb2.3. копируем в tb1
Да, и чуток на путал - tb1- 100 тыс записей, tb2 - 80 тыс.

Добавлено через 14 часов 27 минут
Т.е. в результате получаем таблицу tb1 примерно 120 тыс. записей (20 из tb2) в которой 80 тыс. записей имеют значение в поле tb1.3.
0
шапоклякистка 8-го дня
 Аватар для texnik-san
3681 / 2241 / 391
Регистрация: 26.06.2015
Сообщений: 4,647
Записей в блоге: 1
31.07.2015, 09:41
Лучший ответ Сообщение было отмечено nos_dim как решение

Решение

SQL
1
2
UPDATE Tab1 INNER JOIN Tab2 ON (Tab1.F2 = Tab2.F2) AND (Tab1.F1 = Tab2.F1) 
SET Tab1.F3 = Tab2.F3;
SQL
1
2
3
INSERT INTO Tab1 (F1, F2, F3) SELECT Tab2.F1, Tab2.F2, Tab2.F3
FROM Tab1 RIGHT JOIN Tab2 ON (Tab1.F2 = Tab2.F2) AND (Tab1.F1 = Tab2.F1)
WHERE (Tab1.F1 IS NULL) OR (Tab1.F2 IS NULL);
Добавлено через 1 минуту
Немного иначе назвала таблицы и поля, сорри.
1
0 / 0 / 0
Регистрация: 28.07.2015
Сообщений: 3
31.07.2015, 10:14  [ТС]
Спасибо огромное!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.07.2015, 10:14
Помогаю со студенческими работами здесь

Сравнение двух таблиц
Можно ли запросом осуществить сравнение двух таблиц, чтобы отображались те записи, которых нет в таблице сравнения? Я эту задачу решаю...

Сравнение двух таблиц
Добрый день! Есть такая задача: Имеет две огромных таблицы первая название - Х МК | Cristal 1 | 123 | 2 | 321 |...

Сравнение и выборка из двух таблиц одной БД
Нужно сравнить две таблицы одной БД Таблица 1 - поле1.1, поле2.1, поле3.1 Таблица 2 - поле1.2, поле2.2, поле3.2, поле4.2, поле5.2 ...

Сравнение двух таблиц по отдельным полям
Сравнение 2 (двух) БД(таблиц) Access по отдельным полям Здравствуйте, передо мной легла такая задача, есть старая БД 2011 года,...

Выбор записей с двух таблиц
Здравствуйте Есть 2 таблицы Client и PayList Делаю вот такой запрос SELECT Client.FamClient, PayList.OplPos, PayList.Posetil FROM...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru