Здравствуйте, почему функция не всегда работает так как нужно?
Данной командой
SELECT * FROM `wp_terms`
WHERE term_id IN (272,273,160)
из базы выводится 3 записи:
$wp_terms = array(
array('term_id' => '160','name' => '...',
array('term_id' => '272','name' => '...',
array('term_id' => '273','name' => '...',
);
Команда
SELECT * FROM `wp_terms`
WHERE term_id IN (Select br_get_parent_cat(273))
Должна выводить те же 3 записи, в ней функция возвращает 3 значения (272,273,160) , но выводится только одна строка (с term_id = передаваемому в функцию значением)
Вот сама функция:DELIMITER //
CREATE FUNCTION br_get_parent_cat(var1 INT) RETURNS CHAR(100)
DETERMINISTIC
SQL SECURITY DEFINER
COMMENT 'Get parent category procedure'
BEGIN
DECLARE parent_id INT;
DECLARE result, result_while, parent_id_vchar CHAR(100);
SET parent_id = 0;
SET parent_id_vchar = '';
SET result_while = '';
SET result = var1;
SET parent_id = (SELECT `parent` FROM wp_term_taxonomy WHERE `term_taxonomy_id` = var1);
SET result = concat(result, ", ", parent_id);
WHILE parent_id <> 0 DO
SET parent_id = ( SELECT `parent` FROM wp_term_taxonomy WHERE `parent` <> 0 AND `term_taxonomy_id` = parent_id );
IF (parent_id IS NOT NULL) THEN
SET parent_id_vchar = CONVERT(parent_id, CHAR(100));
SET result_while = concat(result_while, ", ", parent_id_vchar);
END IF;
END WHILE;
SET result = concat(result, result_while);
RETURN result;
END//
DELIMITER ;
SELECT br_get_parent_cat(273);
Результат выполнения:
273,272,160
В чем может быть проблема? Спасибо.