SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 14.06.2010 16:20:42

Артем125
Участник
Зарегистрирован: 05.10.2009
Сообщений: 9

рекурсивный спуск

Здравствуйте!

есть табличка

CREATE TABLE IF NOT EXISTS `system_catalog` (
  `id_catalog` int(11) NOT NULL AUTO_INCREMENT,
  `name` tinytext NOT NULL,
  `id_parent` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id_catalog`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251;


и дамп

INSERT INTO `system_catalog` (`id_catalog`, `name`, `id_parent`) VALUES
(1, 'RO', 0),
(2, 'T', 0),
(3, 'Пораздел ',  1),
(4, 'О', 0),
(5, 'подкаталог', 4),
(7, 'Подраздел 2', 1),
(8, 'Подкаталог Подкталог ', 3);

Какой составить запрос, что бы введя id_catalog = 3 получить значение начальной ветви id_catalog=1

Отредактированно Артем125 (14.06.2010 16:30:16)

Неактивен

 

#2 14.06.2010 16:45:52

Артём
Участник
Зарегистрирован: 24.02.2010
Сообщений: 13

Re: рекурсивный спуск

Вложенными?
SELECT * FROM system_catalog WHERE `id_catalog` IN ( SELECT `id_parent` FROM system_catalog WHERE id_catalog =3 )

Неактивен

 

#3 14.06.2010 17:31:12

Артем125
Участник
Зарегистрирован: 05.10.2009
Сообщений: 9

Re: рекурсивный спуск

мы не знаем глубину вложения(


то есть нужно выводить все пока id parent не станет равным нулю
скажем для id=8

Отредактированно Артем125 (14.06.2010 17:35:10)

Неактивен

 

#4 14.06.2010 18:50:01

Артём
Участник
Зарегистрирован: 24.02.2010
Сообщений: 13

Re: рекурсивный спуск

есть подозрение, что через вложенный запрос вложенности эдак 10 smile и с проверкой через IF это можно провернуть, но времени сейчас нет рабочий запрос составить

Неактивен

 

#5 15.06.2010 19:00:12

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: рекурсивный спуск

Рекурсия произвольного уровня вложенности в одном запросе средствами MySQL не программируется.

Делать такое придется процедурой. Например, такой, как описывается в этой статье: http://webew.ru/articles/2080.webew#mysql

offtop: По никам сначала подумал, что Вы сам себе отвечаете.. :о

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson