Траблы с каталогом

calg0n

Новичок
Траблы с каталогом

Люди хелп плиз!
Есть таблица catalog. Столбцы :
catalog_id - ID каталога.
catalog_level - уровень каталога от 1 до 3.
catalog_parent_id - ID родительского каталога (каталоги 1-го уровня содержат здесь нули).
catalog_name - имя каталога.

_Машины (catalog_id = 1, catalog_level = 1, catalog_parent_id = 0)
__|-- BMW (catalog_id = 10, catalog_level = 2, catalog_parent_id = 1)
_______|--- 520i (catalog_id = 20, catalog_level = 3, catalog_parent_id = 10)

Как можно одним запросом вытащить ID каталога 1-го уровня, зная ID каталога 2-го или 3-го уровня?
PostgreSQL 8.1.4
 

fixxxer

К.О.
Партнер клуба
у тебя классический список смежности, только с добавленным catalog_level
http://phpwiki.ru/Tree/Al

твоя задача решается

1. рекурсией (можно реализовать с помощью хранимой процедуры)
2. зная catalog_level можно сделать нужное количество JOIN-ов
2. вместо parent_id хранить полный путь (это уже материализованные пути)
 
Сверху