Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как сравнить две таблицы [D7]


R.O.O.T ©   (2006-03-07 09:54:00) 

Господа подскажите у меня есть две таблицы. как сравнить данные в них т.е. какие записи несовпадают те выбрать и передать в третью таблицу


Sergey13   (2006-03-07 16:09:00) [1]

2[18] sniknik ©   (07.03.06 14:10)
>> как лучше мне посторить алгоритм
>на начало работы дававай пустую таблицу тогда ВСЕ что там будет при сохранении будет новым
Или вновь веденным старым. 8-)


sniknik   (2006-03-07 14:10:00) [2]

> как лучше мне посторить алгоритм
на начало работы дававай пустую таблицу тогда ВСЕ что там будет при сохранении будет новым... и ничего вычислять не надо. после сохранения ощищать. + добавь уникальный номер к этим "пакетам" на изменение, и будет аналог документа. можно вести историю, исправлять...


r.o.o.t   (2006-03-07 13:35:00) [3]

ну инвалидностью непахнет просто у меня есть локальная бд в которой пользователь делал определенную работу и мне нужно данные которые он наработал сбросить на сервер БД трехзвенка. вот поэто я и думаю как лучше мне посторить алгоритм по которому можно вычеслить что есть на сервере а что есть на стороне клиента. Клиент работает в offline и неможет постоянно держать conect  с сервером


msguns   (2006-03-07 11:44:00) [4]

1. Переписать в 3-ю таблицу все записи 1-й и 2-й таблиц
2. Удалить из 3-й таблице те записи, ключи которой имеются в 1-й и2-й.

ЗЫ. Сама задача откровенно пованивает инвалидностью модели БД. (см. [13]


Sergey13   (2006-03-07 11:25:00) [5]

Exists будет достаточно. Точнее Not Exists.


sniknik   (2006-03-07 11:19:00) [6]

evvcom ©   (07.03.06 11:03) [11]
> full join ... minus
в аккессе такого синтаксиса нет.

r.o.o.t ©   (07.03.06 11:03) [12]
> а попдробнее можно ??? плиз
подробнее в справке по используемому движку. а в "общем" он тебе такого насоветует... (и все будет правдой, но относится к различным, а не твоему, "sql-ям")


sniknik   (2006-03-07 11:12:00) [7]

несовпадающее по одной таблице (по второй аналогично. можно соеденить по union в один, только придется в подзапросе если запись делать)

SELECT t1.*  INTO Table3 FROM Table1 t1 LEFT JOIN Table2 t2 ON t1.Field1=t2.Field1 WHERE t2.Field1 IS NULL

но вообще, множество идентичных таблиц наводит на мысль о неправильно построенной базе.


r.o.o.t   (2006-03-07 11:03:00) [8]

а попдробнее можно ??? плиз


evvcom   (2006-03-07 11:03:00) [9]

В стандарте SQL (92 вроде, может и раньше?) я нашел такой UNION JOIN. Как раз то, что надо, только вот ни в одной из СУБД, с какими хоть мал мальски работал, этого не реализовали. Тогда остается только
... full join ... minus ... inner join ...


r.o.o.t   (2006-03-07 10:57:00) [10]

все читал книгу Мартина Грубера но непойму как посторить запрос чтобы сравнить два поля в разных таблицах и выбрать разницу(в записях) в данных между этими полями


stone   (2006-03-07 10:50:00) [11]


> 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:48:00) [12]

я понимаю что можно а вот чето неполучается  подскажите плиз


Fay   (2006-03-07 10:47:00) [13]

Значит можно одним запросом.


r.o.o.t   (2006-03-07 10:43:00) [14]

Access


Fay   (2006-03-07 10:43:00) [15]

СУБД, конечно, DB2?


r.o.o.t   (2006-03-07 10:42:00) [16]

непонятно
допустим есть поле 1 и поле 2 в разных таблицах в которых хранятся идентичные данные допустим я в поле 2 добавлю 10 записаей как мне запросом вычислит разность т.е. эти 10 записей и переписать их в поле 1


Anatoly Podgoretsky   (2006-03-07 10:36:00) [17]

WHERE


r.o.o.t   (2006-03-07 10:35:00) [18]

ну по двум трем полям


stone   (2006-03-07 10:01:00) [19]

что значит не совпадают?
по каким полям? по ключевым или вообще?


Наверх

Титульная страница Поиск, карта сайта Написать письмо