2016-06-06 2 views
-2

Я пытаюсь вставить сумму цен из другой таблицы.с использованием предложения WHERE в триггере INSERT SQL

INSERT INTO Invoice_Of_Supplier (OrderSupplierID, PaymentStatus, Cost) 
VALUES (
(SELECT OrderSupplierID FROM inserted), 
0, 
(SELECT SUM([Price(RUB)]) FROM Car 
    JOIN OrderOfSupplier_Car AS osc ON osc.CarID=Car.CarID 
where osc.OrderSupplierID = (select OrderSupplierID from inserted))) 

У меня есть Car таблицы с полями price, CarID и т.д.;

Order_Of_Supplier стол с полями OrderSupplierID, SupplierID;

И Order_Of_Supplier_Car таблица, в которой есть ряд машин для каждого заказа (поля CarID, OrderSupplierID)

Мне нужно вставить строку в таблице «InvoiceOfSupplier» с полей «OrderSupplierID», PaymentStatus и Cost ,

OrderSupplierID и PaymentStatus в порядке, но Cost является NULL, и я не могу понять, почему. Когда я меняю на osc.OrderSupplierID = 2 (получение OrderSupplierID напрямую), он не работает niether. Это работает, когда я удаляю все условия типа «ГДЕ», но в этом случае он получает «Цена (RUB)» всех заказов, а не тот, который мне нужен.

РЕДАКТИРОВАТЬ: Проблема заключается в том, что в данные момент был вставлен в Order_Of_Supplier не было никаких данных в Order_Of_Supplier_Car.

+0

'SUM ([Цена (RUB)])' .. цена - это функция? – Moumit

+1

Невозможно помочь, не зная больше о ваших данных. Как мы знаем, что вы не получаете точно правильных результатов? Пожалуйста, разместите образцы данных и результаты, которые вы ожидаете получить от него. –

+0

Извините, цена (руб.) - это столбец, а не fuction. –

ответ

0

попробовать что-то вроде этого:

INSERT INTO Invoice_Of_Supplier (OrderSupplierID, PaymentStatus, Cost) 
VALUES (
(SELECT OrderSupplierID FROM inserted), 
0, 
(SELECT SUM(column_name) FROM Car 
where Car.CarID = OrderOfSupplier_Car.CarID 
and OrderOfSupplier_Car.OrderSupplierID in (select OrderSupplierID from inserted)) 
+0

Пожалуйста, объясните ***, что вы изменили - и почему это должно решить проблему. –

+0

doest произведение p.s. Мне нужно было добавить JOIN OrderOfSupplier_Car для выполнения запроса. –

+0

Я заменил '=' на 'in', и я думаю, что у вас может быть ошибка в SUM ([Price (RUB)] –

0

Почему вы не просто выбрать из вставлено?

INSERT INTO dbo.Invoice_Of_Supplier (OrderSupplierID, PaymentStatus, Cost) 
SELECT 
    i.OrderSupplierID, 
    0, 
    SUM(osc.[Price(RUB)]) 
FROM inserted i 
inner join dbo.OrderOfSupplier_Car osc 
on osc.OrderSupplierID = i.OrderSupplierID 
inner join dbo.Car c 
ON c.CarID = osc.CarID 
group by i.OrderSupplierID 

, и я считаю, что вам не нужно, что присоединиться к Car на всех

Некоторые вопросы к вам: это after или instead of триггер? На какой стол?

+0

Это триггер 'AFTER'. Извините за недоразумение. Я отредактировал свой qusetion. –

+0

Этот код не создает строку в таблице InvoiceOfSupplier вообще. Mybe есть способ для изменения smth в моем запросе, потому что проблема только в поле 'Cost'. –

+0

Проблема не в поле' Cost' - проблема связана с ** отсутствием соответствующих данных ** для этого запроса. –

Смежные вопросы