







|
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,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
32809
|
|