Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Совмещение SELECT, INSERT, DELETE, UPDATE

70K
14 июня 2011 года
ddimae
4 / / 14.06.2011
И еще одна головоломка:
4) There are two tables InventoryStudents and CurrentInventoryStudents (you can build and fill in these tables using the attached script). The InventoryStudents table contains the list of students that have studied at the University over the past year with their course specify. The CurrentInventoryStudents table contains the list of students who moved to the next course and new students with new their course specify.
You should write one and only one SQL state which will do the following:

a) insert the students who are found in CurrentInventoryStudents and not found in InventoryStudents into InventoryStudents
b) delete from InventoryStudents those students that aren't found in CurrentInventoryStudents
c) update the StudyYear field in the InventoryStudents table from the StudyYear field of
CurrentInventoryStudents table if StudentsName is found in both tables
d) display the list of actions that were applied to the InventoryStudents table. If DELETE action was applied, please, display also the values of deleted row (StudentsName,StudyYear), if other actions (INSERT,UPDATE) were applied, please, display the new values for changed rows.

create table InventoryStudents
(ID int identity(1,1) not null primary key,
StudentsName varchar(200) not null,
StudyYear smallint not null);


create table CurrentInventoryStudents
(ID int identity(1,1) not null primary key,
StudentsName varchar(200) not null,
StudyYear smallint not null);


insert into InventoryStudents
(StudentsName,StudyYear)
values
('Ivanov',1),
('Ivanova',5),
('Petrov',2),
('Sidorov',4),
('Gorin',5)


insert into CurrentInventoryStudents
(StudentsName,StudyYear)
values
('Ivanov',2),
('Sidorov',5),
('Semenov',1),
('Levin',5),
('Semonov',2)

Судя по переводу, нужно сделать ТОЛЬКО ОДИН ЗАПРОС, который сделает все четыре пункта. Как сделать пошагово или путем создания дополнительной таблицы понятно. А вот одним запросом все сделать возможно? У кого какие мысли?
385
14 июня 2011 года
SomewherSomehow
477 / / 25.07.2004
Посмотрите в сторону оператора merge с предложением output
70K
14 июня 2011 года
ddimae
4 / / 14.06.2011
Спасибо! Вы действительно помогли, причем классно - хороший рыбак не дает рыбу, а дает удочку!
385
14 июня 2011 года
SomewherSomehow
477 / / 25.07.2004
Не за что, разбирайтесь.
Если что-то конкретное не будет получаться - публикуйте то, что у вас получилось, будем смотреть.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог