2014-11-14 3 views
0

Любая рекомендация для вложенного запроса mysql в процедуре?Альтернативный способ mysql вложенный запрос в процедуре

CREATE DEFINER=`root`@`%` PROCEDURE `GET_PLACE_PARENT_CATEGORY`(IN paramCategoryId INT) 
BEGIN 
    SELECT pc.place_parent_category_id, (SELECT pcc.place_category FROM place_category pcc WHERE pcc.place_category_id = pc.place_parent_category_id) 
FROM place_category pc WHERE pc.place_category_id = paramCategoryId; 
END 
+0

Перепишите запрос соответствующим [join.] (Http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html) – fancyPants

ответ

0

Ваш вложенный запрос находится в одной таблице. Вы уверены, что это правильно? Я считаю, что вам нужно простое соединение между двумя таблицами. Что-то вроде этого, может быть:

ВЫБРАТЬ pc.place_parent_category_id, pcc.place_category
ОТ place_category ПК покинул присоединиться place_parent_category как PCC на pcc.place_category_id = pc.place_parent_category_id WHERE pc.place_parent_category_id = paramCategoryId;

+0

Каков эффективный способ? Мой или ваш? – egemen

+0

Посмотрите сами, сделайте EXPLAIN перед обоими запросами http://ronaldbradford.com/blog/timing-your-sql-queries-2010-07-07/ –

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