Создать запрос, используя UPDATE

Nadya-1
Дата: 31.01.2013 18:35:44
Добрый день.

Помогите, пожалуйста, составить запрос для изменения значений поля таблицы, при выполнении ряда условий.
Имеется две таблицы:

- таблица "SP1" содержит поля:
"ОС_доставки" char(9)
"Код_улицы" int

-таблица "Table_1" содержит поля:
"Nov" int
"Star" int
"OS" char(9)

Необходимо заменить значение поля "Код_улицы" в таблице "SP1" на значение из поля "Nov"
таблицы "Table_1", если значение поля "OS" таблицы "Table_1" равно значению поля "ОС_доставки" таблицы "SP1" и
значение поля "Star" таблицы "Table_1" равно значению поля "Код_улицы" таблицы "SP1".
В таблице SP1 записей с одинаковыми "ОС_доставки" и "Код_улицы" может быть несколько.

Я написала следующее:

UPDATE [SP1]
SET [Улица] = Table_1.Nov
WHERE (SELECT Table_1.Nov FROM [Table_1] WHERE ([Table_1].OS IN (SELECT [SP1].ОС_доставки FROM [SP1]))
AND (Table_1.Star IN (SELECT dbo.SP1.Улица FROM [SP1])))

При попытке выполнения выдается сообщение:
Сообщение 4145, уровень 15, состояние 1, строка 4
An expression of non-boolean type specified in a context where a condition is expected, near ')'.
Glory
Дата: 31.01.2013 18:39:01
BOL - UPDATE

C. Using the UPDATE statement with information from another table
The following example modifies the SalesYTD column in the SalesPerson table to reflect the most recent sales recorded in the SalesOrderHeader table.

UPDATE Sales.SalesPerson
SET SalesYTD = SalesYTD + SubTotal
FROM Sales.SalesPerson AS sp
JOIN Sales.SalesOrderHeader AS so
    ON sp.BusinessEntityID = so.SalesPersonID
    AND so.OrderDate = (SELECT MAX(OrderDate)
                        FROM Sales.SalesOrderHeader
                        WHERE SalesPersonID = sp.BusinessEntityID);
Glory
Дата: 31.01.2013 18:41:04
Nadya-1
Я написала следующее:

Напишите сначала SELECT, который просто отобразит текущее поле и на что оно будет меняться
Это на 99% будет готовый UPDATE
Nadya-1
Дата: 31.01.2013 20:20:21
[Glory][/Напишите сначала SELECT, который просто отобразит текущее поле и на что оно будет меняться
Это на 99% будет готовый UPDATE]

Glory, по Вашему совету я написала SELECT. Он выглядит у меня следующим образом:
SELECT [ОС_доставки]
          ,[Улица]
          , T1.Nov
 FROM [SP1] S1, [Table_1] T1 
 WHERE (T1.OS=S1.ОС_доставки) AND (T1.Star=S1.Улица)


В результате получила таблицу с правильным отображением данных в столбцах:

ОС_доставки Улица Nov
427970 64 63
427970 64 63
427920 772 14492
427920 772 14492
427920 772 14492


Однако, как написать запрос UPDATE я по-прежнему не понимаю.
Дело в том, что раньше я запросы никогда не писала т.е "чайник" полный.
Попробовала по аналогии с тем запросом, что Вы привели в первом сообщении. В результате получила:
UPDATE SP1
SET [Улица] = Table_1.Nov
FROM SP1 AS s1
JOIN Table_1 AS t1
    ON s1.Улица = t1.Star
    AND t1.OS = s1.ОС_доставки

При выполнении получаю следующую ошибку:
Сообщение 4104, уровень 16, состояние 1, строка 1
The multi-part identifier "Table_1.Nov" could not be bound.
[/color=red]
pkarklin
Дата: 31.01.2013 20:35:31
Nadya-1,

автор
Table_1 AS t1


Вы же алиас дали таблице.
ZVER-10
Дата: 31.01.2013 20:38:12
а так?
UPDATE SP1
SET [Улица] = t1.Nov
FROM SP1 AS s1
JOIN Table_1 AS t1
    ON s1.Улица = t1.Star
    AND t1.OS = s1.ОС_доставки
Nadya-1
Дата: 31.01.2013 20:53:22
ZVER-10, Спасибо!!! Получилось!!!
Nadya-1
Дата: 31.01.2013 20:56:13
А также огромное спасибо Glory и pkarklin