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

Откуда: Харьков
Сообщений: 52
Здравствуйте уважаемы!!!!
Пожалуйста, помоги!!! мне очень надо решить задачку!
Есть 2 таблицы : Student_new(ID,StudentName, Year) и Student_old(ID,StudentName, Year)

Задание: надо обновить год в первой таблице, если имя в пейрвой и второй таблице совпадают.
Нарпимер , Иванов есть в первой таблице. Год-1999, и Иванов есть во 2й таблице.Год 1996. Тогда в первой таблице будет Иванов. Год-1999

Я делала так:
update InventoryStudents
set StudyYear=(select CurrentInventoryStudents.StudyYear from CurrentInventoryStudents
where CurrentInventoryStudents.StudentsName =InventoryStudents .StudentsName)
where exists (select CurrentInventoryStudents.StudentsName from CurrentInventoryStudents
where CurrentInventoryStudents.StudentsName =InventoryStudents .StudentsName)

Но ничего не обновляется....=((((((( мне сказали надо использовать курсоры. Но я понятия не имею как это сдеать.хотя гуглила.. Помоги ,пожалуйста!!!!!
5 янв 12, 13:58    [11861724]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE подзапрос+ курсоры  [new]
aleks2
Guest
--Есть 2 таблицы : Student_new(ID,StudentName, Year) и Student_old(ID,StudentName, Year)

--Задание: надо обновить год в первой таблице, если имя в пейрвой и второй таблице совпадают.
--Нарпимер , Иванов есть в первой таблице. Год-1999, и Иванов есть во 2й таблице.Год 1996. Тогда в первой таблице будет Иванов. Год-1999 ??? наверно, всеж, 1996?

UPDATE [new] SET Year=[old].Year
FROM Student_new [new] INNER JOIN Student_old [old] on [new].StudentName=[old].StudentName
5 янв 12, 14:05    [11861753]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE подзапрос+ курсоры  [new]
Glory
Member

Откуда:
Сообщений: 104751
update a
set Year=b.Year
from Student_new a 
INNER JOIN Student_old b ON a.StudentName = b.StudentName
5 янв 12, 14:07    [11861764]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE подзапрос+ курсоры  [new]
Dari_18
Member

Откуда: Харьков
Сообщений: 52
спасибо за то, что ответили! работает запрос в обоих вариантах без ошибок- только ничего не обновляет- пишет (строк обработано: 0)

=(
а можно как-то через курсор это сделать?
5 янв 12, 14:57    [11862016]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE подзапрос+ курсоры  [new]
Glory
Member

Откуда:
Сообщений: 104751
Dari_18
спасибо за то, что ответили! работает запрос в обоих вариантах без ошибок- только ничего не обновляет- пишет (строк обработано: 0)

Значит нет вашего Иванова в обеих таблицах
5 янв 12, 15:01    [11862039]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE подзапрос+ курсоры  [new]
Dari_18
Member

Откуда: Харьков
Сообщений: 52
есть он там=)
я приложила рисунок -доказательство)

К сообщению приложен файл. Размер - 47Kb
5 янв 12, 15:13    [11862095]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE подзапрос+ курсоры  [new]
Glory
Member

Откуда:
Сообщений: 104751
Dari_18
есть он там=)
я приложила рисунок -доказательство)

Запустите лучше запрос
select * from Student_new a
INNER JOIN Student_old b ON a.StudentName = b.StudentName
5 янв 12, 15:19    [11862120]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE подзапрос+ курсоры  [new]
Glory
Member

Откуда:
Сообщений: 104751
И почему вы пишите про "если имя в пейрвой и второй таблице совпадают.", а соединение делаете по ID ?
5 янв 12, 15:20    [11862124]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE подзапрос+ курсоры  [new]
Dari_18
Member

Откуда: Харьков
Сообщений: 52
спасибо!=)просто без разницы по чему делать иннер джоин, главное чтобы поля в разных таблицах совпадали... не получилось- я про апдейт...
5 янв 12, 15:25    [11862150]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить