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

Откуда:
Сообщений: 32
Есть Таблица склад(Код позиции, Наименование, кол-во в штуках) и таблица Продажа(Код продажи, Цена, Кол-во в штуках). При продаже в количестве 10 единиц нам нужно вычесть это значение со склада, но при этом еще учесть то чтобы кол-во в продаже было меньше чем на складе, т.е. выводить ошибку о отмене поставки. Как это реализовать?
18 дек 12, 12:45    [13648060]     Ответить | Цитировать Сообщить модератору
 Re: Как вычесть значение поля одной таблицы из значения поля другой?  [new]
_djХомяГ
Guest
if проверка не прошла
raiserror()
else
update
18 дек 12, 12:53    [13648110]     Ответить | Цитировать Сообщить модератору
 Re: Как вычесть значение поля одной таблицы из значения поля другой?  [new]
Катя2012
Member

Откуда:
Сообщений: 32
_djХомяГ,

ALTER TRIGGER [dbo].[Триггер_ins]
ON [dbo].[Продажа] FOR INSERT
AS
IF @@ROWCOUNT=1
BEGIN
IF NOT EXISTS(SELECT *
FROM inserted
WHERE inserted.количество<=ALL(SELECT
Номенклатура.Количество
FROM Продажа,Номенклатура
WHERE Продажа.[номер позиции]=
Номенклатура.[номер позиции]))
BEGIN
ROLLBACK TRAN
PRINT
'Отмена поставки: товара на складе нет'
END
END
18 дек 12, 16:28    [13649692]     Ответить | Цитировать Сообщить модератору
 Re: Как вычесть значение поля одной таблицы из значения поля другой?  [new]
Катя2012
Member

Откуда:
Сообщений: 32
Катя2012,

Create TRIGGER [dbo].[Триггер_ins]
ON [dbo].[Продажа] FOR INSERT
AS
IF @@ROWCOUNT=1
BEGIN
IF NOT EXISTS(SELECT *
FROM inserted
WHERE inserted.количество<=ALL(SELECT
Номенклатура.Количество
FROM Продажа,Номенклатура
WHERE Продажа.[номер позиции]=
Номенклатура.[номер позиции]))
BEGIN
ROLLBACK TRAN
PRINT
'Отмена поставки: товара на складе нет'
END
else (Select Номенклатура.[Количество], Продажа.[Количество] From Номенклатура,Продажа
(Номенклатура.[Количество]-Продажа.[Количество] AS [Количество]
WHere Номенклатура.[номер позиции]=Продажа.[номер позиции])

END

помогите найти ошибку
18 дек 12, 17:47    [13650303]     Ответить | Цитировать Сообщить модератору
 Re: Как вычесть значение поля одной таблицы из значения поля другой?  [new]
PaulYoung
Member

Откуда: Москва
Сообщений: 2565
Катя2012,

не знаю, что оно делает, но как-то так
Create TRIGGER [dbo].[Триггер_ins]
ON [dbo].[Продажа] FOR INSERT
AS
IF @@ROWCOUNT=1
BEGIN
IF NOT EXISTS(SELECT *
FROM inserted
WHERE inserted.количество<=ALL(SELECT
Номенклатура.Количество
FROM Продажа,Номенклатура
WHERE Продажа.[номер позиции]=
Номенклатура.[номер позиции]))
BEGIN
ROLLBACK TRAN
PRINT
'Отмена поставки: товара на складе нет'
END
else (Select Номенклатура.[Количество], Продажа.[Количество],
(Номенклатура.[Количество]-Продажа.[Количество]) AS [Количество]
From Номенклатура,Продажа
WHere Номенклатура.[номер позиции]=Продажа.[номер позиции])

END
18 дек 12, 17:50    [13650323]     Ответить | Цитировать Сообщить модератору
 Re: Как вычесть значение поля одной таблицы из значения поля другой?  [new]
qwerty112
Guest
Катя2012
Катя2012,

Create TRIGGER [dbo].[Триггер_ins]
ON [dbo].[Продажа] FOR INSERT
AS
IF @@ROWCOUNT=1
BEGIN
  IF NOT EXISTS(SELECT *
      FROM inserted
      WHERE inserted.количество<=ALL(SELECT
        Номенклатура.Количество
    FROM Продажа,Номенклатура
    WHERE Продажа.[номер позиции]=
      Номенклатура.[номер позиции]))
    BEGIN
      ROLLBACK TRAN
    PRINT 
     'Отмена поставки: товара на складе нет'
    END
    else (Select Номенклатура.[Количество], Продажа.[Количество] From Номенклатура,Продажа  
     (Номенклатура.[Количество]-Продажа.[Количество] AS [Количество]
    WHere Номенклатура.[номер позиции]=Продажа.[номер позиции])
    
END


помогите найти ошибку

тут всё одна сплошная ошибка
и код в теги оформляй, "пока не началось"
18 дек 12, 17:53    [13650355]     Ответить | Цитировать Сообщить модератору
 Re: Как вычесть значение поля одной таблицы из значения поля другой?  [new]
PaulYoung
Member

Откуда: Москва
Сообщений: 2565
Катя2012,

верно qwerty112 заметил, триггер какой-то странный у Вас: в нём, по идее, должна обновляться таблица Склад, но там только SELECT...
18 дек 12, 18:06    [13650413]     Ответить | Цитировать Сообщить модератору
 Re: Как вычесть значение поля одной таблицы из значения поля другой?  [new]
Катя2012
Member

Откуда:
Сообщений: 32
PaulYoung,

не вычитает((
18 дек 12, 18:31    [13650467]     Ответить | Цитировать Сообщить модератору
 Re: Как вычесть значение поля одной таблицы из значения поля другой?  [new]
Катя2012
Member

Откуда:
Сообщений: 32
PaulYoung,

что мне еще дописать?
18 дек 12, 18:35    [13650478]     Ответить | Цитировать Сообщить модератору
 Re: Как вычесть значение поля одной таблицы из значения поля другой?  [new]
PaulYoung
Member

Откуда: Москва
Сообщений: 2565
Катя2012
PaulYoung,

что мне еще дописать?
Как минимум, UPDATE вашего Склада. Товары на Складе нужно связать с товарами в Продажах и обновить их кол-ва.
18 дек 12, 18:39    [13650490]     Ответить | Цитировать Сообщить модератору
 Re: Как вычесть значение поля одной таблицы из значения поля другой?  [new]
Катя2012
Member

Откуда:
Сообщений: 32
PaulYoung,

это где прописать, я не совсем понимаю
18 дек 12, 18:41    [13650493]     Ответить | Цитировать Сообщить модератору
 Re: Как вычесть значение поля одной таблицы из значения поля другой?  [new]
PaulYoung
Member

Откуда: Москва
Сообщений: 2565
Катя2012,

это надо прописать в Вашем триггере в ветке ELSE
18 дек 12, 18:43    [13650502]     Ответить | Цитировать Сообщить модератору
 Re: Как вычесть значение поля одной таблицы из значения поля другой?  [new]
Катя2012
Member

Откуда:
Сообщений: 32
PaulYoung,

помогите прописать
18 дек 12, 19:40    [13650704]     Ответить | Цитировать Сообщить модератору
 Re: Как вычесть значение поля одной таблицы из значения поля другой?  [new]
_djХомяГ
Guest
А триггер зачем
18 дек 12, 20:48    [13650938]     Ответить | Цитировать Сообщить модератору
 Re: Как вычесть значение поля одной таблицы из значения поля другой?  [new]
PaulYoung
Member

Откуда: Москва
Сообщений: 2565
_djХомяГ
А триггер зачем
Последнее время это стало модным трендом тынц, тынц, тынц...
18 дек 12, 22:21    [13651226]     Ответить | Цитировать Сообщить модератору
 Re: Как вычесть значение поля одной таблицы из значения поля другой?  [new]
Катя2012
Member

Откуда:
Сообщений: 32
_djХомяГ,

я не знаю как, если не через триггеры
18 дек 12, 23:05    [13651341]     Ответить | Цитировать Сообщить модератору
 Re: Как вычесть значение поля одной таблицы из значения поля другой?  [new]
londinium
Member

Откуда: Киев
Сообщений: 1197
автор
я не знаю как, если не через триггеры

Открывайте в Вашем учебнике главу "Хранимые процедуры"
18 дек 12, 23:53    [13651432]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить