powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / SQL запрос для двух таблиц
7 сообщений из 7, страница 1 из 1
SQL запрос для двух таблиц
    #38525791
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть две таблицы оригинал(field1,field2) и копия, в оригинале внесли(не внесли) изменения в поле field1, как построить SQL запрос , чтоб узнать были сделаны изменения в оригинале или нет...
...
Рейтинг: 0 / 0
SQL запрос для двух таблиц
    #38525835
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если field2 это ключ то так
Код: sql
1.
select * from t1 full join t2 on t1.field2 = t2.field2 where nvl(t1.field1, ' ') != nvl(t2.field1, ' ')


если ключа нет, то сложнее, но можно
...
Рейтинг: 0 / 0
SQL запрос для двух таблиц
    #38526014
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

Спасибо
...
Рейтинг: 0 / 0
SQL запрос для двух таблиц
    #38526592
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно ли использовать в качестве ключа номер записи, ведь кол-во записей что в копии, что в оригинале одинаково..., что-то типа
select recno() as _key1, * from t1 full join (select recno() as _key1, * from t2) t2 on t1._key1 = t2._key1...?
...
Рейтинг: 0 / 0
SQL запрос для двух таблиц
    #38526708
q1w1e1,
Нельзя. Так как в этом случае будет важно не только совпадение ключей в полях field2, но еще и порядок следования записей в каждой из таблиц... А этот параметр сложно поддается прогнозированию... примерно в такой же степени, как прогнозирование погоды...
...
Рейтинг: 0 / 0
SQL запрос для двух таблиц
    #38527480
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
q1w1e1можно ли использовать в качестве ключа номер записи, ведь кол-во записей что в копии, что в оригинале одинаково..., что-то типа
select recno() as _key1, * from t1 full join (select recno() as _key1, * from t2) t2 on t1._key1 = t2._key1...?
если есть уверенность что PACK не было, то можно. Только язык SQL не имеет такого понятия как номер записи, поэтому советую сделать сначала выборку в курсор через SCAN, а потом как я выше писал. Примерно так
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
create cursor c1 (id i, field1 c(10), field2 c(10))
sele t1
scan
     insert into c1 (id, field1, field2) values (recno('t1'), t1.field1, t1.field2)
endscan
create cursor c2 (id i, field1 c(10), field2 c(10))
sele t2
scan
     insert into c2 (id, field1, field2) values (recno('t2'), t2.field1, t2.field2)
endscan
select * from с1 full join с2 on с1.Id = c2.Id where nvl(c1.field1, ' ') != nvl(c2.field1, ' ') or nvl(c1.field2, ' ') != nvl(c2.field2, ' ')



Более универсальный вариант отсортировать обе таблицы по field1+field2 и идти сканом по обоим сравнивая на больше/равно/меньше. Так можно вычислить все изменения включая удаления.
...
Рейтинг: 0 / 0
SQL запрос для двух таблиц
    #38527716
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо..
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / SQL запрос для двух таблиц
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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