Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.05.2008, 09:52   #1
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию Рекурсивный SQL запрос

Имеется MySQL, в ней таблица table реализующая структуру каталога с полями
id
sub_id
...
...
...
где id - уникальный идентификатор каждого элемента каталога
а sub_id - ссылка этого элемента на родительский элемент

как бы написать SQL запрос, который выдаст все элементы, которые "ниже"/"выше" заданного id ....
то есть все вложенные элементы/или наоборот...... подозреваю что это делать с помощью рекурсий... но как конкретно - не знаю....
Может кто что подскажет?
ADSoft вне форума Ответить с цитированием
Старый 19.05.2008, 11:46   #2
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

ADSoft, уточните. Я бы сказал, что скорее не рекурсий, а суб-запросов, благо mysql, начиная с версии 4 с чем-то, их поддерживает, но целиком схему, которая нужна, по Вашему описанию не смог себе вообразить....
B_N вне форума Ответить с цитированием
Старый 19.05.2008, 12:39   #3
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

Цитата:
Сообщение от B_N Посмотреть сообщение
ADSoft, уточните. Я бы сказал, что скорее не рекурсий, а суб-запросов, благо mysql, начиная с версии 4 с чем-то, их поддерживает, но целиком схему, которая нужна, по Вашему описанию не смог себе вообразить....
...возможно неверно выразился......точнее как сказать..... попробую....
Есть таблица элементов каталога, каждый элемент определятся полями Id - уникальным номером, и Sub_id - принадлежность к родителю (указывается id того элемента которому принадлежит....если корень то 0)
.... задача - при выборе элемента - найти все множество элементов принадлежащих ему и далее (как ветка дерева)/ ну и как частный случай - не принадлежащих......
вот тут подсказывают что как то через Distinct и INNER JOIN...а как конкретно низнаю
ADSoft вне форума Ответить с цитированием
Старый 24.05.2008, 23:09   #4
Feniks_infinity
Новичок
Джуниор
 
Аватар для Feniks_infinity
 
Регистрация: 24.05.2008
Сообщений: 1
По умолчанию

не знаю как на счет MySQL, а в Oracle работает:

SELECT LPAD(' ', 2*LEVEL)|| sub_id
FROM table
START WITH id=....
CONNECT BY PRIOR id= sub_id;
->> выдает sub_id, принадлежащие выбранному id
Feniks_infinity вне форума Ответить с цитированием
Старый 25.05.2008, 09:07   #5
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

Э..... выбрать все элемены у который sub_id = id не проблемма....
надо все деево выбрать! то есть и те элементы, которые в сою очередь ринадлежат sub_id ...итд итп....
я так уже понял чистым SQL не разобраться... поцедуры нада писать в самом API или создавать хранимые процедуры... которых в MySQL нет
ADSoft вне форума Ответить с цитированием
Старый 02.06.2008, 16:55   #6
Domovoy
Форумчанин
 
Регистрация: 24.10.2007
Сообщений: 254
По умолчанию

Код:
  DECLARE @tree TABLE (id int, ParentID int, [level] int)
  DECLARE @level int
  SET @level = 0
  INSERT INTO @tree (id, ParentID, [level])
  VALUES(@idNode, @idNode, @level)
  WHILE 1 = 1
  BEGIN
	INSERT @tree (id, ParentID, [level])
	SELECT v.idNode, v.idParent, @level + 1
	FROM dbo.dbtree v
	  INNER JOIN @tree t ON t.id = v.idParent AND t.level = @level
       where V.idDBTree=@DBTreeID
	IF @@ROWCOUNT = 0 
         BREAK
	SET @level = @level + 1
  END
  select * from @tree
Думаю лутшего метода быть не может
Domovoy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
запрос ссылается на несвязанный с ним запрос kolebatel SQL, базы данных 0 11.06.2008 12:50
SQL запрос Uomo БД в Delphi 17 23.04.2008 14:12
Запрос Инночка БД в Delphi 2 23.04.2008 13:19
SQL запрос SERG1980 БД в Delphi 6 19.10.2007 23:03
SQL-запрос Elena БД в Delphi 3 17.05.2007 15:13