Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.02.2016, 12:14   #1
gigar
Пользователь
 
Регистрация: 23.01.2013
Сообщений: 23
По умолчанию Запрос с Insert и Update

Добрый день. Помогите с запросом.

Код HTML:
ALTER PROCEDURE [dbo].[posting_plus]  
                       
           @num_posting int,
           @num_order int
AS
BEGIN
IF  NOT EXISTS (select * from posting,orders where posting.num_posting=@num_posting and orders.num_order=@num_order
and posting.kod_nom=orders.kod_nom) 
begin
insert into posting (posting.num_posting,posting.kod_nom,posting.qty_posting)  select @num_posting ,orders.kod_nom,orders.qty_order from orders where orders.num_order=@num_order 
end
else 
begin
UPDATE posting SET posting.qty_posting=posting.qty_posting+orders.qty_order from orders WHERE posting.kod_nom=orders.kod_nom AND orders.num_order=@num_order AND posting.num_posting=@num_posting
end
END
Нужно: если есть одинаковые записи в таблице posting и orders, то в posting сделать update, если нет совпадений - то сделать insert в posting из orders недостающих записей.

Сейчас update работает, а insert работает только если вообще нет совпадений. Помогите пожалуйста.
gigar вне форума Ответить с цитированием
Старый 18.02.2016, 12:34   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

IF вообще не нужен. UPDATE и INSERT достаточно. Примерно так, если не напутал

Код:
UPDATE posting
  SET qty_posting=posting.qty_posting+orders.qty_order
  from orders
  WHERE posting.kod_nom=orders.kod_nom AND
        orders.num_order=@num_order AND
        posting.num_posting=@num_posting
insert into posting (num_posting,kod_nom,qty_posting)
  select @num_posting,R.kod_nom,R.qty_order
    from orders R
    where R.num_order=@num_order AND
          NOT EXISTS(SELECT 1
                       FROM posting P
                       WHERE P.kod_nom=R.kod_nom AND
                             P.num_posting=@num_posting)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 18.02.2016, 12:37   #3
gigar
Пользователь
 
Регистрация: 23.01.2013
Сообщений: 23
По умолчанию

ОГРОМНОЕ СПАСИБО. ЗАПРОС РАБОТАЕТ КАК НАДО.
gigar вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Посчитать количество INSERT и UPDATE Flexopro Помощь студентам 1 26.03.2015 19:58
Insert or Update в хранимой процедуре Dozent SQL, базы данных 4 15.10.2013 03:17
Update or Insert и FireBird 2.5.2 Pashka_cool БД в Delphi 21 23.08.2013 23:55
Запрос UPDATE&INSERT&DELETE l0nley SQL, базы данных 5 17.07.2009 05:59
insert и update Tanusha SQL, базы данных 4 13.03.2009 14:47