Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
запрос никак не получается... (Вячеслав) 15/01/2008 - 17:14:47
      Re: запрос никак не получается... (Сергей) 15/01/2008 - 18:44:48
      Re: запрос никак не получается... (vi.k) 16/01/2008 - 03:04:16
      Re: запрос никак не получается... (Вячеслав) 17/01/2008 - 13:45:12
      Re: запрос никак не получается... (vi.k) 19/01/2008 - 11:31:27

> Original message text:
> From: Вячеслав - 15/01/2008 - 17:14:47
> Subject:запрос никак не получается...
> -----------------
> Добрый день..
> у меня на сайте сделана след. структура в базе данных каталога..
>
> есть 2 поля -> categoryID parent (остальные поля не пишу..)
>
> 1 запись categoryID=22 parent=0
> 2 запись categoryID=43 parent=22
> 3 запись categoryID=343 parent=43
> 4 запись categoryID=588 parent=343
>
> т.е. для четвертой записи подкатегория равна 588, сама она входит в подкатегорию 343, а та в 43 и т.д.
> перебирая это в цикле, можно получить родительскую директорию, дойти до самого верха...и наоборот зная родительскую можно например выбрать все товары которые лежат под ней и ниже по ее подддиректориями..
>
> Вопрос как написать запрос в мускул который зная номер поддиректории найдет ее родительскую, т.е. самую верхнюю..
> для данного примера я хочу найти categoryID=22 для categoryID=588
> Спасибо...
>


From: Вячеслав - 17/01/2008 - 13:45:12
Subject:запрос никак не получается...
-----------------
Написал вот так.. под свою таблицу..
===========================================
DELIMITER $$
DROP FUNCTION IF EXISTS `get_ancestry` $$
CREATE FUNCTION `get_ancestry`(id INT UNSIGNED) RETURNS int(11)
BEGIN
DECLARE p_id INT UNSIGNED;
SET p_id = (SELECT `parent` FROM `ss_categories` WHERE `categoryID` =291);
WHILE p_id != 0 DO
SET id = p_id;
SET p_id = (SELECT `parent` FROM `ss_categories` WHERE `categoryID` =291);
END WHILE;
RETURN IF(p_id IS NULL, NULL, id);
END $$
DELIMITER ;
===========================================
Мускул выдает ответ..
DELIMITER $$ DROP FUNCTION IF EXISTS `get_ancestry` $$

Ответ MySQL:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF EXISTS `get_ancestry`' at line 1
=========================================
попытался убрать DROP

DELIMITER $$
CREATE FUNCTION `get_ancestry`(id INT UNSIGNED) RETURNS int(11)
BEGIN
DECLARE p_id INT UNSIGNED;
SET p_id = (SELECT `parent` FROM `ss_categories` WHERE `categoryID` =291);
WHILE p_id != 0 DO
SET id = p_id;
SET p_id = (SELECT `parent` FROM `ss_categories` WHERE `categoryID` =291);
END WHILE;
RETURN IF(p_id IS NULL, NULL, id);
END $$
DELIMITER ;
========
так он дальше ругается...

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(id INT UNSIGNED) RETURNS int(11)
BEGIN
DECLARE p_id INT UNS
==============

где камень подводный ? Спасибо





[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
32809



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |