Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нахождение дельты между таблицами 
:(
    Опции темы
MLans
Дата 24.4.2014, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 17.3.2007

Репутация: нет
Всего: нет



Здравствуйте, у нас есть 2 таблицы


Таблица1
ID FirstName LastName
1 Иван Иванов
2 Максим Петров

Таблица2
ID FirstName LastName Changes
1 Иван Петров
2 Николай Васильев


нужно проставить в таблице 2 в поле Changes значения в зависимости от того, какие данные были изменены - только фамилия (1) или имя и фамилия (2), запись была удалена или добавлена.

Код

update t2 set Changes = case 
                                           when t2.FirstName = t1.FirstName and t2.LastName = t1.LastName then 0
                                           when t2.FirstName = t1.FirstName and t2.LastName <> t1.LastName then 1
                                           when t2.FirstName <> t1.FirstName and t2.LastName <> t1.LastName then 2
                                         end
  from Таблица2 t2 inner join Таблица1 t1 on t2.ID = t1.ID


так можно узнать изменения в данных, а вот как сделать что если в первой таблице совсем нет человека обозначить его как добавленного, а если человека нет во второй таблице обозначить его как удаленного?

Спасибо! 
PM MAIL   Вверх
Akina
Дата 25.4.2014, 08:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Код

update t2 
set Changes = case
                   when t1.ID is null then -1
                   when t2.FirstName = t1.FirstName and t2.LastName = t1.LastName then 0 
                   when t2.FirstName = t1.FirstName and t2.LastName <> t1.LastName then 1 
                   else 2 
               end 
from Таблица2 t2 
left join Таблица1 t1 
    on t2.ID = t1.ID 



Добавлено через 2 минуты и 16 секунд
PS. А чё за СУБД-то?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0687 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.