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

Откуда:
Сообщений: 6
Подскажите, можно ли сделать так, что бы после выполнения запроса на выборку, если этот запрос вернул какие то данные, выполнить другой запрос? Нужно написать всё это в одном стейтменте. Подскажите пожалуйста.
6 окт 15, 18:20    [18243111]     Ответить | Цитировать Сообщить модератору
 Re: Выполнить запрос, если другой запрос вернул результат.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37152
if @@rowcount > 0
6 окт 15, 18:23    [18243123]     Ответить | Цитировать Сообщить модератору
 Re: Выполнить запрос, если другой запрос вернул результат.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37152
В одном стейтменте:

select ... Запрос2 ... where exists( select ... Запрос1 )

Сообщение было отредактировано: 6 окт 15, 18:25
6 окт 15, 18:25    [18243147]     Ответить | Цитировать Сообщить модератору
 Re: Выполнить запрос, если другой запрос вернул результат.  [new]
Jajer13
Member

Откуда:
Сообщений: 6
А если мне нужно сделать update, это сработает?
6 окт 15, 19:35    [18243482]     Ответить | Цитировать Сообщить модератору
 Re: Выполнить запрос, если другой запрос вернул результат.  [new]
СТУДЕНТ123
Guest
Jajer13,

UPDATE TABLE1 SET POLE = S.POLE
FROM TABLE1 INNER JOIN (SELECT ЗАПРОС 1 FROM TABLE2 WHERE ТРАТАТА) AS S

Такой вариант не подойдет? на сколько понимаю update будет на основе полученной выборки, если не ошибаюсь то зачем столько городить.
6 окт 15, 19:50    [18243546]     Ответить | Цитировать Сообщить модератору
 Re: Выполнить запрос, если другой запрос вернул результат.  [new]
Jajer13
Member

Откуда:
Сообщений: 6
Буду делать апдейт, по результам выборки. Если запрос вернул что то, то делаю апдейт
6 окт 15, 20:18    [18243667]     Ответить | Цитировать Сообщить модератору
 Re: Выполнить запрос, если другой запрос вернул результат.  [new]
Jajer13
Member

Откуда:
Сообщений: 6
Вроде написал. Но одинаковые поля не позволительны в запросе. Подскажите, как его можно переписать?
UPDATE Evolution1.DimAdministrator 
SET  Evolution1.DimAdministrator.ClaimSystemCodeId = 17 
FROM Evolution1.DimAdministrator da  INNER JOIN ( Select
ExtractId,   
base.AdministratorId, 
base.CardprocessorAdministratorId, 
AdministratorName,                                 
EffectiveDate,           
CancelDate ,             
State,
StageError  ,
AdministratorKey,
CustomerKey ,
Name            ,                                                                                     
EffectiveDateKey ,
CancelDateKey,
StateProvinceKey ,
Alias ,
NavId     ,  
warehouse.AdministratorId ,
warehouse.CardprocessorAdministratorId,
warehouse.ClaimSystemCodeId, 
Inserted ,               
Updated
FROM 
        OneStage.OnePay.Administrator base
    inner join
        OneWarehouse.Evolution1.DimAdministrator warehouse
            on base.AdministratorId = warehouse.AdministratorId
where base.ClaimSystemCodeId <> warehouse.ClaimSystemCodeId
  and base.ClaimSystemCodeId = 17) AS Q

Спасибо
7 окт 15, 00:56    [18244415]     Ответить | Цитировать Сообщить модератору
 Re: Выполнить запрос, если другой запрос вернул результат.  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31783
Jajer13
Но одинаковые поля не позволительны в запросе. Подскажите, как его можно переписать?
В вашем запросе вообще нужно убрать поля из SELECT, вставьте *
7 окт 15, 02:49    [18244538]     Ответить | Цитировать Сообщить модератору
 Re: Выполнить запрос, если другой запрос вернул результат.  [new]
Glory
Member

Откуда:
Сообщений: 104760
А Evolution1.DimAdministrator и OneWarehouse.Evolution1.DimAdministrator - это разные таблицы ?
7 окт 15, 08:12    [18244672]     Ответить | Цитировать Сообщить модератору
 Re: Выполнить запрос, если другой запрос вернул результат.  [new]
СТУДЕНТ123
Guest
Jajer13
Вроде написал. Но одинаковые поля не позволительны в запросе. Подскажите, как его можно переписать?
UPDATE Evolution1.DimAdministrator 
SET  Evolution1.DimAdministrator.ClaimSystemCodeId = 17 
FROM Evolution1.DimAdministrator da  INNER JOIN ( Select
ExtractId,   
base.AdministratorId, 
base.CardprocessorAdministratorId, 
AdministratorName,                                 
EffectiveDate,           
CancelDate ,             
State,
StageError  ,
AdministratorKey,
CustomerKey ,
Name            ,                                                                                     
EffectiveDateKey ,
CancelDateKey,
StateProvinceKey ,
Alias ,
NavId     ,  
warehouse.AdministratorId ,
warehouse.CardprocessorAdministratorId,
warehouse.ClaimSystemCodeId, 
Inserted ,               
Updated
FROM 
        OneStage.OnePay.Administrator base
    inner join
        OneWarehouse.Evolution1.DimAdministrator warehouse
            on base.AdministratorId = warehouse.AdministratorId
where base.ClaimSystemCodeId <> warehouse.ClaimSystemCodeId
  and base.ClaimSystemCodeId = 17) AS Q

Спасибо


Что то подсказывает что вы намудрили с синтаксисом, или это не весь текст скрипта?, в БОЛ имеются отличные примеры. Повнимательнее с JOIN'ом к запросу

UPDATE DBO.TABLE1 SET	T1.COLUMN_NAME1 = D1.COLUMN_NAME1,
						T1.COLUMN_NAME2 = D1.COLUMN_NAME2
FROM DBO.TABLE1 AS T1	INNER JOIN (
										SELECT	T2.ID, T2.COLUMN_NAME1, T3.COLUMN_NAME2
										FROM	DBO.TABLE2 AS T2 INNER JOIN  DBO.TABLE3 AS T3 ON T2.ID = T3.ID
										WHERE	......
									) AS D1 ON T1.ID = D1.ID
7 окт 15, 08:57    [18244783]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить