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

Откуда: Tallinn
Сообщений: 576
Нужно обновить строку данными из другой строки той же таблички. Можно это сделать одним UPDATE?
20 мар 06, 19:39    [2469162]     Ответить | Цитировать Сообщить модератору
 Re: Помогите со скриптом  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37103
Да. Читайте примеры из BOL.
20 мар 06, 19:42    [2469178]     Ответить | Цитировать Сообщить модератору
 Re: Помогите со скриптом  [new]
RENaissance
Member

Откуда: Муром->Москва
Сообщений: 10895

???
create table #tbl (colID int, colValue varchar(10))
insert #tbl values (1, '1111')
insert #tbl values (2, '2222')
insert #tbl values (3, '3333')

update #tbl set
  colValue = (select colValue from #tbl where colID = 1)
where colID = 2

select * from #tbl

drop table #tbl



Posted via ActualForum NNTP Server 1.3

20 мар 06, 19:45    [2469184]     Ответить | Цитировать Сообщить модератору
 Re: Помогите со скриптом  [new]
bonzadk
Member

Откуда: Tallinn
Сообщений: 576
мне нужно копию нескольких полей, а не всех.. в БОЛе нашел
UPDATE Sales.SalesPerson
SET SalesYTD = SalesYTD + SubTotal
FROM Sales.SalesPerson AS sp
JOIN Sales.SalesOrderHeader AS so
    ON sp.SalesPersonID = so.SalesPersonID
    AND so.OrderDate = (SELECT MAX(OrderDate)
                        FROM Sales.SalesOrderHeader 
                        WHERE SalesPersonID = 
                              sp.SalesPersonID);
но чота не соображу как его для одной таблицы загнуть
20 мар 06, 20:17    [2469249]     Ответить | Цитировать Сообщить модератору
 Re: Помогите со скриптом  [new]
bonzadk
Member

Откуда: Tallinn
Сообщений: 576
	UPDATE Orders
	SET 
		Orders.ClientID = p.ClientID,
		Orders.WantedDate = p.WantedDate
	FROM Orders AS p WHERE p.OrderNum = 35
	AND (OrderNum = 34)

так не работает :(
20 мар 06, 20:22    [2469261]     Ответить | Цитировать Сообщить модератору
 Re: Помогите со скриптом  [new]
RENaissance
Member

Откуда: Муром->Москва
Сообщений: 10895

Что значит, копия нескольких полей?
Может это?
create table #tbl (colID int, colValue varchar(10), colValue1 int)
insert #tbl values (1, '1111', 10)
insert #tbl values (2, '2222', 20)
insert #tbl values (3, '3333', 30)

update #tbl set
  #tbl.colValue = tbl_1.colValue,
  #tbl.colValue1 = tbl_1.colValue1
from #tbl
cross join #tbl tbl_1
where
  #tbl.colID = 2 and
  tbl_1.colID = 1

select * from #tbl

drop table #tbl



Posted via ActualForum NNTP Server 1.3

20 мар 06, 20:24    [2469264]     Ответить | Цитировать Сообщить модератору
 Re: Помогите со скриптом  [new]
bonzadk
Member

Откуда: Tallinn
Сообщений: 576
вот так переделал:
	UPDATE Orders
	SET 
		Orders.ClientID = p.ClientID,
		Orders.WantedDate = p.WantedDate
	FROM Orders INNER JOIN
		Orders AS p ON p.OrderNum = 35
	AND (Orders.OrderNum = 34) 
заработало. Спасибо!
20 мар 06, 20:27    [2469270]     Ответить | Цитировать Сообщить модератору
 Re: Помогите со скриптом  [new]
bonzadk
Member

Откуда: Tallinn
Сообщений: 576
RENaissance

Что значит, копия нескольких полей?
Может это?
create table #tbl (colID int, colValue varchar(10), colValue1 int)
insert #tbl values (1, '1111', 10)
insert #tbl values (2, '2222', 20)
insert #tbl values (3, '3333', 30)

update #tbl set
  #tbl.colValue = tbl_1.colValue,
  #tbl.colValue1 = tbl_1.colValue1
from #tbl
cross join #tbl tbl_1
where
  #tbl.colID = 2 and
  tbl_1.colID = 1

select * from #tbl

drop table #tbl



Posted via ActualForum NNTP Server 1.3


CROSS JOIN - это с какой целью?
20 мар 06, 20:28    [2469273]     Ответить | Цитировать Сообщить модератору
 Re: Помогите со скриптом  [new]
RENaissance
Member

Откуда: Муром->Москва
Сообщений: 10895

INNER JOIN Orders AS p ON p.OrderNum = 35
тоже самое, что
cross join Orders As p
where p.OrderNum = 35



Posted via ActualForum NNTP Server 1.3

20 мар 06, 20:41    [2469294]     Ответить | Цитировать Сообщить модератору
 Re: Помогите со скриптом  [new]
bonzadk
Member

Откуда: Tallinn
Сообщений: 576
RENaissance

INNER JOIN Orders AS p ON p.OrderNum = 35
тоже самое, что
cross join Orders As p
where p.OrderNum = 35



Posted via ActualForum NNTP Server 1.3

А как лучше и почему?
22 мар 06, 19:32    [2478191]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить