2015-03-27 4 views
0

Я пытаюсь создать функцию MySQL для вычисления общей суммы заказа клиента.MYSQL: функция для вычисления общего количества заказов

Данные нормированы, исходя из двух разных таблиц. Я считаю, что я получил инструкцию для выбора масштабирования правильно, но изо всех сил пытаюсь умножить на количество и объединить строки вместе, чтобы вернуть его.

Вот мой запрос (который дает мне «не разрешили вернуться в результирующий набор из функции» ошибка):

delimiter $$ 
create function calcOrderTotal(id int(10)) 
returns decimal(10,2) 
reads sql data 
begin 
    declare orderTotal decimal(10,2); 
    select itemId, (select itemPrice from item i where oi.itemId = i.itemId), quantity from orderItem oi where orderId = id; 
    set orderTotal = sum(itemPrice); 
    return (orderTotal); 
end $$ 

ответ

2

Вам просто нужно объединение:

SELECT SUM(itemPrice * quantity) 
FROM item i JOIN orderItem oi USING (itemId) 
WHERE orderId = ? 

Но , если вы абсолютно должны поставить его в функции:

CREATE FUNCTION calcOrderTotal(id INT(10)) 
RETURNS DECIMAL(10,2) 
READS SQL DATA 
RETURN (
    SELECT SUM(itemPrice * quantity) 
    FROM item i JOIN orderItem oi USING (itemId) 
    WHERE orderId = id 
); 
+0

Удивительно, спасибо. – MarcJames