Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 update (need help)  [new]
undll
Member

Откуда:
Сообщений: 20
Есть 3 временные таб.:

1. #TempID - с полями IDs (табельный номер сотрудника), PASSPORT (серия номер паспорта), FIO (ФИО).
В данной таблице список сотрудинков которые не первый раз устраивались в контору. Выгрузка таковых идет по паспортным данным, они ищет сотрудников с 1 паспортными данными.
[img]http://i037.radikal.ru/1105/cf/bf8f416dbe82.jpg[/img]

2. #TempIDMax - с полями IDs (табельный номер сотрудника), PASSPORT (серия номер паспорта), FIO (ФИО).
Здесь последняя актуальная запись сотрудника.
[img]http://s004.radikal.ru/i207/1105/3b/ca521cd67454.jpg[/img]

3. #TempTR - список трейнингов которые не весят на последнее актуальной записи сотрудника.
[img]http://i034.radikal.ru/1105/6a/80369f5c3807.jpg[/img]

Задача, обновить в таблице TempTR поле TabN на последний актуальный табельный номер и обновить поле ФИО
5 май 11, 12:54    [10609274]     Ответить | Цитировать Сообщить модератору
 Re: update (need help)  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Рекомендации по оформлению сообщений в форуме п.6.
5 май 11, 12:59    [10609317]     Ответить | Цитировать Сообщить модератору
 Re: update (need help)  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 7498
undll,

А если Пупкин поменяет паспорт? Пмм, ошибка в проектировании.
5 май 11, 14:14    [10610072]     Ответить | Цитировать Сообщить модератору
 Re: update (need help)  [new]
davim
Member

Откуда:
Сообщений: 11
На вашем месте я бы провел нормализацию базы и сделал примерно следующую структуру:

create table Person(PersonID int identity primary key, Passport varchar(20), FIO varchar(255))
create unique index IX_Person_Passport_FIO on Person(Passport)

create table Employee(PersonID int references Person(PersonID), TabNom varchar(20), BegDate datetime, EndDate datetime primary key(PersonID, BegDate, EndDate))

create table Training(TrainingID int primary key identity,  Name varchar(255))

create table PersonTraining(PersonID int references Person(PersonID), TrainingID int references Training(TrainingID), BegDate datetime, EndDate datetime primary key(PersonID, TrainingID, BegDate, EndDate))

тогда ваша проблема перестанет существовать. При увольнении сотрудника пробивается EndDate у записи в таблице Employee. Если вдруг он решит устроиться еще раз заводим новую запись в таблице Employee с тем же PersonID - все курсы к данной персоне уже привязаны.
7 май 11, 14:45    [10621003]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить