[php, sql] вывести дерево из бд
рекурсивно?
по-моему только рекурсивно
Ну так, а в чём тогда проблема, если ты понимаешь, что это надо сделать рекурсивно?
все уже сделал, спасибо всем за помощь
а не рекурсивно, а одним запросом?
можно препроцессинг рекурсивно, а потом в один запрос
это то да, но вроде как проскакивала в разделе тема с тремя тестовыми заданиями, и как раз одним из них был вывод такой структуры в один запрос...
Любую рекурсию можно раскрыть.
а конкретно эту как раскрыть не подскажешь?
CREATE OR REPLACE FUNCTION treebranch(int4, int4)
RETURNS SETOF record AS
'DECLARE
start_node ALIAS FOR $1;
val ALIAS FOR $2;
ret RECORD;
BEGIN
FOR ret IN SELECT * FROM table1 WHERE f1=start_node
RETURN NEXT ret;
FOR ret IN SELECT * FROM treebranch(ret.f1,val) as t1 (f2,f3,f4,f5,...) LOOP
RETURN NEXT ret;
END LOOP;
END LOOP;
RETURN;
END;
'
LANGUAGE 'plpgsql' VOLATILE;
И пользуешь её для выборки в один запрос.
pgadminэто что?
я вообще то про стандартные переносимые методы спрашивал....
без pgadmin-а по-моему хранимую процедуру тоже можно написать
насчет переносимости тоже вроде все впорядке - главное, чтобы сервер баз данных поддерживал хранимые процедуры.
про то как любую рекурсию раскрыть - правда интересный вопрос.
ааа.... а для мускуля есть решение?
не надо будет каждый раз процедуру дёргать
MySQL начиная с 5-й версии поддерживает хранимые процедуры.
понятно, спасибо......
Оставить комментарий
dasha69
Есть таблица, в которой 2 колонки. В первой(id) хранится id католога, во второй(parent_id) - id родительского католога.Как из такой структуры вытащить дерево в виде массива с соответствующей вложенностью?
Заранее спасибо