2014-03-29 5 views
1

Это снова PHPMyAdmin ... Я пытаюсь запустить запрос на две таблицы - карты и владельцы (в которых перечислены все игроки с собственными картами). И я хотел бы создать функцию, которая вернет (если будет указано имя) общую сумму этой карты на рынке. Я определил это следующим образом:Почему PHPMyAdmin выдает ошибку в синтаксисе SQL?

CREATE FUNCTION get_card_overall_count (_name TEXT) 
RETURNS INT 
DETERMINISTIC 
READS SQL DATA 

BEGIN 
DECLARE res INT; 
SET res = SELECT SUM(`ownerships`.`amount`) 
      FROM `ownerships` JOIN `cards` ON `ownerships`.`card_ID` = `cards`.`ID` 
      WHERE `cards`.`name` = _name 
      GROUP BY `name`; 
RETURN res; 
END// 

ответ

2

Синтаксис SET хочет правую сторону, чтобы быть скаляром, а не запрос, но вы можете убедить его запустить скалярный подзапрос:

SET res = (SELECT SUM(`ownerships`.`amount`) 
      FROM `ownerships` JOIN `cards` ON `ownerships`.`card_ID` = `cards`.`ID` 
      WHERE `cards`.`name` = _name 
      GROUP BY `name`); 
+2

Или альтернативно скажите: 'SELECT res: =. , , 'и не использовать' SET' вообще. –

+1

Или 'sum (...) в res' –

+0

Хорошо, это работает (я имею в виду не результат, которого я хотел, но и никаких синтаксических ошибок) –

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