powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Дописать отличающиеся или новые значения из таблицы в таблицу
12 сообщений из 12, страница 1 из 1
Дописать отличающиеся или новые значения из таблицы в таблицу
    #39876545
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что то я подтупливаю. Есть 2 таблицы с примерно одинаковыми данными. Данных примерно по 150к в каждой. Надо из одной(table1) таблицы в другую(table2) закинуть отличающиеся записи и записи которые отсутствуют.
В какую сторону вообще смотреть?
Интересует SQL код.
...
Рейтинг: 0 / 0
Дописать отличающиеся или новые значения из таблицы в таблицу
    #39876573
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngel, мастер запросов - записи без подчинённых
...
Рейтинг: 0 / 0
Дописать отличающиеся или новые значения из таблицы в таблицу
    #39876636
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург,
И что это даст?
...
Рейтинг: 0 / 0
Дописать отличающиеся или новые значения из таблицы в таблицу
    #39876637
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Данные отличаются хотябы по 1 из 4х возможных полей
...
Рейтинг: 0 / 0
Дописать отличающиеся или новые значения из таблицы в таблицу
    #39876648
BlackeAngelПанург - мастер запросов - записи без подчинённых
И что это даст? А вы пробовали? Связь между таблицами должна быть по 4-м полям (4 стрелочки к Т2). При условии Is Null к обязательному полю Т2 (или всем 4-м полям Т2) вы получите из Т1 "отличающиеся записи и записи которые отсутствуют" в Т2.
Но тут важно, есть ли в одинаковых записях пустые поля. Если есть, то такие записи тоже вылезут.
...
Рейтинг: 0 / 0
Дописать отличающиеся или новые значения из таблицы в таблицу
    #39876693
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кривцов Анатолий,
Возможно, как раз это и не сделал - 4 стрелочки, воспользовался только 1й основной
А вот на счёт последнего не понял. В 16 столбцах, естественно есть и пустые поля, но по тем по которым надо найти отличия всякое тоже может быть. Поэтому не понятно, это условие.
...
Рейтинг: 0 / 0
Дописать отличающиеся или новые значения из таблицы в таблицу
    #39876881
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробовал - ничего не вышло.
Пришлось сначала выборку делать отдельную таблицу, а затем из этой таблицы вставлять в ту которую надо. Велосипед, да ещё и тормозной.
...
Рейтинг: 0 / 0
Дописать отличающиеся или новые значения из таблицы в таблицу
    #39876949
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И записи, которые отсутствуют в другой таблице приходится вставлять отдельно.
...
Рейтинг: 0 / 0
Дописать отличающиеся или новые значения из таблицы в таблицу
    #39876958
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngel..... Есть 2 таблицы с примерно одинаковыми данными....
Зато теперь знаете что делать так крайне не желательно
...
Рейтинг: 0 / 0
Дописать отличающиеся или новые значения из таблицы в таблицу
    #39876965
BlackeAngelПоэтому не понятно, это условие Пустое поле, это Null. А Null никогда ничему не равен, даже другому Null.
BlackeAngelПопробовал - ничего не вышло. Что-то вы не так делаете...
Попробуйте так:
Код: plsql
1.
SELECT * FROM [table1] As t1 WHERE NOT EXISTS (SELECT * FROM [table2] As t2 WHERE NZ(t2.[Поле1])=NZ(t1.[Поле1]) And NZ(t2.[Поле2])=NZ(t1.[Поле2]) And NZ(t2.[Поле3])=NZ(t1.[Поле3]) And NZ(t2.[Поле4])=NZ(t1.[Поле4])) 

Если результат устраивает - переделайте этот запрос в запрос на добавление.
...
Рейтинг: 0 / 0
Дописать отличающиеся или новые значения из таблицы в таблицу
    #39877004
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku,
Это потому что надо сравнить 2 таблицы
...
Рейтинг: 0 / 0
Дописать отличающиеся или новые значения из таблицы в таблицу
    #39877013
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кривцов Анатолий,
Я разбил свою задачи на шаги
Шаг 1
Код: sql
1.
2.
3.
4.
SELECT dbo_ncards_vwDSE.id, dbo_ncards_vwDSE.blank, dbo_ncards_vwDSE.name, dbo_ncards_vwDSE.PathDesign, dbo_ncards_vwDSE.Remark, dbo_ncards_vwDSE.Izd, dbo_ncards_vwDSE.rblank, dbo_ncards_vwDSE.RemarkName, dbo_ncards_vwDSE.RemarkType, dbo_ncards_vwDSE.size, dbo_ncards_vwDSE.size1, Date() AS date_upd INTO tmp2
FROM base RIGHT JOIN dbo_ncards_vwDSE ON base.blank = dbo_ncards_vwDSE.blank
GROUP BY dbo_ncards_vwDSE.id, dbo_ncards_vwDSE.blank, dbo_ncards_vwDSE.name, dbo_ncards_vwDSE.PathDesign, dbo_ncards_vwDSE.Remark, dbo_ncards_vwDSE.Izd, dbo_ncards_vwDSE.rblank, dbo_ncards_vwDSE.RemarkName, dbo_ncards_vwDSE.RemarkType, dbo_ncards_vwDSE.size, dbo_ncards_vwDSE.size1, Date(), base.blank
HAVING (((base.blank) Is Null));


Шаг 2
Код: sql
1.
2.
3.
INSERT INTO base
SELECT *
FROM tmp2;


Шаг 3
Код: sql
1.
2.
3.
4.
SELECT base.id, base.blank, base.name, base.PathDesign, base.Remark, base.Izd, base.rblank, base.RemarkName, base.RemarkType, base.size, base.size1, base.date_upd INTO base_tmp
FROM base
GROUP BY base.id, base.blank, base.name, base.PathDesign, base.Remark, base.Izd, base.rblank, base.RemarkName, base.RemarkType, base.size, base.size1, base.date_upd
HAVING (((base.date_upd)=Max([base]![date_upd])));


Шаг 4
Код: sql
1.
2.
3.
SELECT Date() AS date_upd, dbo_ncards_vwDSE.id, dbo_ncards_vwDSE.blank, dbo_ncards_vwDSE.name, dbo_ncards_vwDSE.PathDesign, dbo_ncards_vwDSE.Remark, dbo_ncards_vwDSE.Izd, dbo_ncards_vwDSE.rblank, dbo_ncards_vwDSE.RemarkName, dbo_ncards_vwDSE.RemarkType, dbo_ncards_vwDSE.size, dbo_ncards_vwDSE.size1 INTO tmp
FROM base_tmp LEFT JOIN dbo_ncards_vwDSE ON base_tmp.[blank] = dbo_ncards_vwDSE.[blank]
WHERE (((base_tmp.PathDesign)<>dbo_ncards_vwDSE!PathDesign)) Or (((base_tmp.size1)<>dbo_ncards_vwDSE!size1));


Шаг 5
Код: sql
1.
2.
3.
4.
SELECT dbo_ncards_vwDSE.blank, base_tmp.PathDesign AS Маршрут_был, dbo_ncards_vwDSE.PathDesign AS Маршрут_стал, base_tmp.size1 AS Заготовка_была, dbo_ncards_vwDSE.size1 AS Заготовка_стала
FROM base_tmp LEFT JOIN dbo_ncards_vwDSE ON base_tmp.blank = dbo_ncards_vwDSE.blank
GROUP BY dbo_ncards_vwDSE.blank, base_tmp.PathDesign, dbo_ncards_vwDSE.PathDesign, base_tmp.size1, dbo_ncards_vwDSE.size1
HAVING (((base_tmp.PathDesign)<>[dbo_ncards_vwDSE]![PathDesign])) OR (((base_tmp.size1)<>[dbo_ncards_vwDSE]![size1]));


Шаг 6
Код: sql
1.
2.
3.
INSERT INTO base
SELECT *
FROM tmp;


Но это работает очень долго.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Дописать отличающиеся или новые значения из таблицы в таблицу
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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