Форум: "Начинающим";
Текущий архив: 2006.03.26;
Скачать: [xml.tar.bz2];
ВнизКак сравнить две таблицы Найти похожие ветки
← →
R.O.O.T © (2006-03-07 09:54) [0]Господа подскажите у меня есть две таблицы. как сравнить данные в них т.е. какие записи несовпадают те выбрать и передать в третью таблицу
← →
stone © (2006-03-07 10:01) [1]что значит не совпадают?
по каким полям? по ключевым или вообще?
← →
r.o.o.t © (2006-03-07 10:35) [2]ну по двум трем полям
← →
Anatoly Podgoretsky © (2006-03-07 10:36) [3]WHERE
← →
r.o.o.t © (2006-03-07 10:42) [4]непонятно
допустим есть поле 1 и поле 2 в разных таблицах в которых хранятся идентичные данные допустим я в поле 2 добавлю 10 записаей как мне запросом вычислит разность т.е. эти 10 записей и переписать их в поле 1
← →
Fay © (2006-03-07 10:43) [5]СУБД, конечно, DB2?
← →
r.o.o.t © (2006-03-07 10:43) [6]Access
← →
Fay © (2006-03-07 10:47) [7]Значит можно одним запросом.
← →
r.o.o.t © (2006-03-07 10:48) [8]я понимаю что можно а вот чето неполучается подскажите плиз
← →
stone © (2006-03-07 10:50) [9]
> r.o.o.t © (07.03.06 10:42) [4]
> непонятно
> допустим есть поле 1 и поле 2 в разных таблицах в которых
> хранятся идентичные данные допустим я в поле 2 добавлю 10
> записаей как мне запросом вычислит разность т.е. эти 10
> записей и переписать их в поле 1
Для начала неплохо бы изучить теорию БД, чтобы понять чем поле отличается от записи. Ну и основы SQL не помешают.
← →
r.o.o.t © (2006-03-07 10:57) [10]все читал книгу Мартина Грубера но непойму как посторить запрос чтобы сравнить два поля в разных таблицах и выбрать разницу(в записях) в данных между этими полями
← →
evvcom © (2006-03-07 11:03) [11]В стандарте SQL (92 вроде, может и раньше?) я нашел такой UNION JOIN. Как раз то, что надо, только вот ни в одной из СУБД, с какими хоть мал мальски работал, этого не реализовали. Тогда остается только
... full join ... minus ... inner join ...
← →
r.o.o.t © (2006-03-07 11:03) [12]а попдробнее можно ??? плиз
← →
sniknik © (2006-03-07 11:12) [13]несовпадающее по одной таблице (по второй аналогично. можно соеденить по union в один, только придется в подзапросе если запись делать)
SELECT t1.* INTO Table3 FROM Table1 t1 LEFT JOIN Table2 t2 ON t1.Field1=t2.Field1 WHERE t2.Field1 IS NULL
но вообще, множество идентичных таблиц наводит на мысль о неправильно построенной базе.
← →
sniknik © (2006-03-07 11:19) [14]evvcom © (07.03.06 11:03) [11]
> full join ... minus
в аккессе такого синтаксиса нет.
r.o.o.t © (07.03.06 11:03) [12]
> а попдробнее можно ??? плиз
подробнее в справке по используемому движку. а в "общем" он тебе такого насоветует... (и все будет правдой, но относится к различным, а не твоему, "sql-ям")
← →
Sergey13 © (2006-03-07 11:25) [15]Exists будет достаточно. Точнее Not Exists.
← →
msguns © (2006-03-07 11:44) [16]1. Переписать в 3-ю таблицу все записи 1-й и 2-й таблиц
2. Удалить из 3-й таблице те записи, ключи которой имеются в 1-й и 2-й.
ЗЫ. Сама задача откровенно пованивает инвалидностью модели БД. (см. [13]
← →
r.o.o.t © (2006-03-07 13:35) [17]ну инвалидностью непахнет просто у меня есть локальная бд в которой пользователь делал определенную работу и мне нужно данные которые он наработал сбросить на сервер БД трехзвенка. вот поэто я и думаю как лучше мне посторить алгоритм по которому можно вычеслить что есть на сервере а что есть на стороне клиента. Клиент работает в offline и неможет постоянно держать conect с сервером
← →
sniknik © (2006-03-07 14:10) [18]> как лучше мне посторить алгоритм
на начало работы дававай пустую таблицу тогда ВСЕ что там будет при сохранении будет новым... и ничего вычислять не надо. после сохранения ощищать. + добавь уникальный номер к этим "пакетам" на изменение, и будет аналог документа. можно вести историю, исправлять...
← →
Sergey13 © (2006-03-07 16:09) [19]2[18] sniknik © (07.03.06 14:10)
>> как лучше мне посторить алгоритм
>на начало работы дававай пустую таблицу тогда ВСЕ что там будет при сохранении будет новым
Или вновь веденным старым. 8-)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.03.26;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.092 c