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

Откуда:
Сообщений: 231
Помогите, плз! SQL Server 2005.
Запрос
  UPDATE 
 [Prj_883].[dbo].[SOLODATA] 
 SET [service]=SS.componenttag
 from [Prj_883].[dbo].[COMPONENTS] AS C
  ,[Prj_883].[dbo].[COMPONENTS] AS CC
  ,[Prj_883].[dbo].[SOLODATA] AS SS
   where   
   (C.SOLODATALINK= [SOLODATA].SOLODATALINK
   AND C.PARENTID>0)
   AND 
   (
    CC.ID=C.PARENTID
   )
   AND(CC.SOLODATALINK=ss.SOLODATALINK) 

дает The multi-part identifier "SOLODATA.SOLODATALINK" could not be bound.
Запрос
  UPDATE 
 [Prj_883].[dbo].[SOLODATA] 
 SET [service]=SS.componenttag
 from [Prj_883].[dbo].[COMPONENTS] AS C
  ,[Prj_883].[dbo].[COMPONENTS] AS CC
  ,[Prj_883].[dbo].[SOLODATA] AS SS
   where 
  (GROUPID <> 707) 
  AND (GROUPID <> 708)
  AND left(C.COMPONENTINDEX,4)<>'ANNO'
  AND   
   (C.SOLODATALINK= SOLODATALINK
   AND C.PARENTID>0)
   AND 
   (
    CC.ID=C.PARENTID
   )
   AND(CC.SOLODATALINK=ss.SOLODATALINK)
 

сообщает, что Ambiguous column name 'SOLODATALINK'.


Можно ли поэлегантней, без создания промежуточного чего-то (таблицы, запроса) добиться результата?

Заранее спасибо!
1 фев 12, 20:42    [12015211]     Ответить | Цитировать Сообщить модератору
 Re: "непростой" апдейт  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
  UPDATE SS
 SET [service]=SS.componenttag
...
1 фев 12, 20:43    [12015216]     Ответить | Цитировать Сообщить модератору
 Re: "непростой" апдейт  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Расставьте у всех полей алиасы, и будет вам щастье.
1 фев 12, 20:44    [12015222]     Ответить | Цитировать Сообщить модератору
 Re: "непростой" апдейт  [new]
Romik76
Member

Откуда:
Сообщений: 231
спасибо за ответ. Возможно, что я Вас не понял, но конструкции вида
UPDATE 
 [Prj_883].[dbo].[SOLODATA] as s
 SET [service]=SS.componenttag
 from [Prj_883].[dbo].[COMPONENTS] AS C
  ,[Prj_883].[dbo].[COMPONENTS] AS CC
  ,[Prj_883].[dbo].[SOLODATA] AS SS
   where 
 
   (C.SOLODATALINK= s.SOLODATALINK
   AND C.PARENTID>0)
   AND 
   (
    CC.ID=C.PARENTID
   )
   AND(CC.SOLODATALINK=ss.SOLODATALINK)

пишут
Msg 156, Level 15, State 1, Line 2
Incorrect syntax near the keyword 'as'.
1 фев 12, 20:47    [12015234]     Ответить | Цитировать Сообщить модератору
 Re: "непростой" апдейт  [new]
Romik76
Member

Откуда:
Сообщений: 231
 UPDATE 
  s
 SET S.[service]=SS.componenttag
 from [Prj_883].[dbo].[SOLODATA] as s,[Prj_883].[dbo].[COMPONENTS] AS C
  ,[Prj_883].[dbo].[COMPONENTS] AS CC
  ,[Prj_883].[dbo].[SOLODATA] AS SS
   where 
 
   (C.SOLODATALINK= s.SOLODATALINK
   AND C.PARENTID>0)
   AND 
   (
    CC.ID=C.PARENTID
   )
   AND(CC.SOLODATALINK=ss.SOLODATALINK)

сработало
большое спасибо!!!!!!!!!!!!
1 фев 12, 20:49    [12015238]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить