Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Jajer13 Member Откуда: Сообщений: 6 |
Подскажите, можно ли сделать так, что бы после выполнения запроса на выборку, если этот запрос вернул какие то данные, выполнить другой запрос? Нужно написать всё это в одном стейтменте. Подскажите пожалуйста. |
6 окт 15, 18:20 [18243111] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37152 |
if @@rowcount > 0 |
6 окт 15, 18:23 [18243123] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37152 |
В одном стейтменте: select ... Запрос2 ... where exists( select ... Запрос1 ) Сообщение было отредактировано: 6 окт 15, 18:25 |
6 окт 15, 18:25 [18243147] Ответить | Цитировать Сообщить модератору |
Jajer13 Member Откуда: Сообщений: 6 |
А если мне нужно сделать update, это сработает? |
6 окт 15, 19:35 [18243482] Ответить | Цитировать Сообщить модератору |
СТУДЕНТ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] Ответить | Цитировать Сообщить модератору |
Jajer13 Member Откуда: Сообщений: 6 |
Буду делать апдейт, по результам выборки. Если запрос вернул что то, то делаю апдейт |
6 окт 15, 20:18 [18243667] Ответить | Цитировать Сообщить модератору |
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] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31783 |
|
||
7 окт 15, 02:49 [18244538] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
А Evolution1.DimAdministrator и OneWarehouse.Evolution1.DimAdministrator - это разные таблицы ? |
7 окт 15, 08:12 [18244672] Ответить | Цитировать Сообщить модератору |
СТУДЕНТ123
Guest |
Что то подсказывает что вы намудрили с синтаксисом, или это не весь текст скрипта?, в БОЛ имеются отличные примеры. Повнимательнее с 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 | ![]() |