Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > Рекурсия при помощи вложенных запросов


Автор: IZ@TOP 19.1.2006, 16:16
Тема уже такая была. Кажется что что-то подобное я делал, но тогда у хостера не оказалось MySQL выше 4.0.

В общем задача такая. Знаю конечный ID выбрать все дерево до корня.

Например есть таблица:

Код

CREATE TABLE m_lib_directories (
  id varchar(20) NOT NULL default '',
  parent varchar(20) NOT NULL default '',
  name varchar(100) character set latin1 NOT NULL default '',
  title varchar(255) character set latin1 NOT NULL default '',
  PRIMARY KEY  (id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;


Имеем ID 31414, нужно пройти по дереву и получить корень

Код

1 -> 42 -> 542 -> 626 -> 5252 -> 31414


Кажется не реализуемым на MySQL.

Автор: mr.fox 20.1.2006, 00:46
ну что-то типа
Код

select parents.*, m_lib_directories.* from parents,m_lib_directories where .parents.id=m_lib_directories.parent and m_lib_directories.id=31314;

подойдет?

Автор: IZ@TOP 20.1.2006, 09:44
mr.fox, и как этот запрос выберет дерево из более чем двух эелемнтов?

Автор: Akina 20.1.2006, 11:01
MySQL нерекурсивен (как и любой SQL). Сделай это хранимой процедурой. Но возможны проблемы (см. напр. http://bugs.mysql.com/bug.php?id=11394 ).

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)