У меня есть следующие функции, MySQL запрос:неправильный результат MySQL в функции только
BEGIN
DECLARE r float(10,2);
DECLARE var_total float(10,2);
DECLARE var_discount float(10,2) DEFAULT null;
SELECT
sum(x.amount)
FROM
(
(SELECT
student_booking_school_course_price as amount
FROM
tbl_student_booking_school_course
WHERE
student_booking_id=par_student_booking_id
)
UNION
(SELECT
student_booking_school_accommodation_price as amount
FROM
tbl_student_booking_school_accommodation
WHERE
student_booking_id=par_student_booking_id
)
UNION
(SELECT
student_booking_school_insurance_price as amount
FROM
tbl_student_booking_school_insurance
WHERE
student_booking_id=par_student_booking_id
)
UNION
(SELECT
student_booking_school_transfer_price as amount
FROM
tbl_student_booking_school_transfer
WHERE
student_booking_id=par_student_booking_id
)
) x
INTO var_total;
IF var_total IS NULL THEN
SET r = 0;
END IF;
-- discount
SET var_discount = (SELECT
sb.student_booking_discount_amount
FROM
tbl_student_booking sb
WHERE
sb.student_booking_id=par_student_booking_id LIMIT 1);
IF var_discount IS NOT NULL THEN
SET r = var_total - var_discount;
end if;
return r;
END
Значения: 9698,88 курс 559,55 проживание 559,55 страхование 145,98 скидка
Похоже, что первый запрос внутри функции, суммирует только разные значения, в результате с дисконтом: 10112.45, поэтому не суммируя одно значение 559.55, я пытался выводить разные вещи как concat со строкой и видеть результат только как 9698.88курс, 559.55accommodation , и т.д .. и это Это хорошо. Поэтому я предполагаю, что проблема заключается не в суммировании, если значения равны. Странная вещь заключается в том, что запуск этого с консоли, только запрос вне функции, он суммирует нормально.
Мой вопрос - это нормальное поведение MySql? Если да, то есть способ предотвратить это? это ошибка?
Я этого не знал! действительно полезная информация! – peterpeterson