Как дезагрегировать вывод хранимой функции phpmyadmin - PullRequest
0 голосов
/ 09 октября 2018

Я создал хранимую функцию в phpmyadmin, которая вычисляет несколько полей для получения общего значения.Я использую функцию, так как вычисления должны использоваться несколько раз в нескольких сценариях, поэтому, насколько мне известно, это наиболее эффективный способ сделать это для минимизации обновлений кода.

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

Код функции:

BEGIN   

DECLARE Output_needed INT(7);   

SET Output_needed = (select SUM(Col1+Col2+Col3) from table1);   

RETURN (Output_needed); 
END 

SQL-запрос:

Select ID, function_name(), Col1, Col2, Col3 from table1

Требуемый вывод запроса

ID  Function Returns    *Output_needed* Col1    Col2    Col3
1   100                 *10*             4      4       2
2   100                 *50*             10     20      20
3   100                 *5*              1      2       2
4   100                 *15*             10     2       3
5   100                 *20*              6     3       1

Может кто-нибудь посоветовать, где я ошибаюсь?Я предполагаю, что где-то пропустил шаг, но, кажется, не могу понять это.

Спасибо!

1 Ответ

0 голосов
/ 09 октября 2018

Запрос выбора функции не имеет условия для получения результата из одной строки. Итак, я только что добавил одно поле для условного использования.

Функция:

DELIMITER $$
CREATE DEFINER=`root`@`localhost` FUNCTION `function_name`(pk_field INT) RETURNS int(11)
BEGIN
    DECLARE output_needed INT;
    SELECT SUM(Col1+Col2+Col3) INTO output_needed FROM table1 WHERE pk_field_name = pk_field;
    RETURN output_needed;
END$$
DELIMITER ;

ВЫБРАТЬ запрос:

Select ID, function_name(pk_field_name), Col1, Col2, Col3 from table1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...