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

Откуда:
Сообщений: 265
Подскажите, у меня первый запрос удаляет все записи, а второй добавляет, а я хочу сделать так что бы он просто не трогал те записи которые добавляю во втором запросе, что бы с первого раза они не удалялись :)


UPDATE Actors
SET   Author = 1, [Status] = -3, Received = GETDATE() 
FROM ContractFull C
INNER JOIN ContractFullLawForm C1 on C.lawForm = C1.LawID
INNER JOIN Actors A ON /* A.Name = (C.Firm + ' ' + C1.LawForm) --AND  */C.ID <> A.Actor
WHERE C.Archive = -1 AND A.ItemID IN (7,25,26,27,28,29,30,31,32,33,34,35,36,47) AND C.Approval IN (4,7) AND A.[Status] > 0


UPDATE Actors
SET   Author = 1, [Status] = 1,     Received = GETDATE()
FROM ContractFull C
INNER JOIN Actors A ON A.Actor = C.ID
WHERE C.Archive = -1 AND c.Approval IN (4,7) AND A.[Status] < 0
31 авг 16, 15:28    [19612854]     Ответить | Цитировать Сообщить модератору
 Re: Запрос  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Вы не привели ни одного запроса, который удаляет или добавляет записи. Они оба изменяют записи.
31 авг 16, 15:29    [19612866]     Ответить | Цитировать Сообщить модератору
 Re: Запрос  [new]
Pabl0
Member

Откуда:
Сообщений: 265
Статус = - 3 это считается что запись удалена, Статус > 0 значит запись есть.
31 авг 16, 15:34    [19612910]     Ответить | Цитировать Сообщить модератору
 Re: Запрос  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Pabl0,

вообще-то, UPDATE не умеет ни добавлять ни удалять записи.

Если же вам надо, всё-таки, апдейтить, да так, чтобы второй апдейт не работал поверх первого,
то надо написать ОДИН апдейт, в котором CASEом определять, на какие значения надо менять поля каждой строки.
Выражение в WHERE при этом должно возвращать TRUE для обоих множеств строк (чтобы их разгребал уже упомянутый CASE в UPDATEе).
И с джойнами надо для этого разобраться.

Я не понимаю условие в джойне C.ID <> A.Actor.
31 авг 16, 15:38    [19612954]     Ответить | Цитировать Сообщить модератору
 Re: Запрос  [new]
Pabl0
Member

Откуда:
Сообщений: 265
Мне по сути нужно в один запрос это сделать, нужно сделать Статус = - 3, но учесть второй запрос.
31 авг 16, 15:43    [19612990]     Ответить | Цитировать Сообщить модератору
 Re: Запрос  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Pabl0
Мне по сути нужно в один запрос это сделать, нужно сделать Статус = - 3, но учесть второй запрос.
https://www.sql.ru/forum/127456/rekomendacii-po-oformleniu-soobshheniy-v-forume , п.4 и п.6
31 авг 16, 15:51    [19613046]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить