[sql]вывести парента опредленого уровня.
или я неправильно понял твой вопрос?
не правильно.
поподробнее объясни что ты хочешь
Или под родителем определенного уровня что-то другое подразумевается?
Так как записей с id=parent_id (то есть я сам себе родитель) в таблице скорее всего нет, твой запрос вернет пустой результат.
ну допустим все 4 левела для каждого ID(левел которого <=2) рядом выводится id его родителя 2-го уровня во всем дереве.
У меня есть запись с ID=15, Parent_ID=10, Level=4.
Плюс родители:
ID=10, ParentID=5, Level=3.
ID=5, ParentID=2, Level=2.
ID=2, ParentID=NULL, Level=1.
Родитель 1-го уровня от первой записи - это ID=10 (Level 3) или ID=2(Level 1)?
И вообще, для каких записей и что нужно выбрать в этом примере?
результат запросал дожен быть
15 5
10 5
5 5
2 NULL
Придется VBA юзать.
глубина 4
http://rsdn.ru/article/db/Hierarchy.xml
Судя по ней, для получения нормального результата придется писать хранимую процедуру.
З.Ы. И не спрашивайте меня, поддерживает ли их MySQL.
Недавно пробегала ссылка - Судя по ней, для получения нормального результата придется писать хранимую процедуру.
З.Ы. И не спрашивайте меня, поддерживает ли их MySQL.
З.Ы. И не спрашивайте меня, поддерживает ли их MySQL.
А при чем тут MySQL?
Речь вроде бы шла про ассess, а он их точно не поддерживает.
Access зато поддерживает VBA плюс формочки для вывода, что вполне заменит хранимую процедуру.
На самом деле если число уровней ровно 4, то проблема наверняка решается.
Просто сейчас нет времени извращаться.
SELECT id, id FROM table1;
SELECT id, parent_id FROM table1;
SELECT id, (SELECT t1.parent_id FROM table1 AS t1 WHERE t1.id = t.parent_id) FROM table1 AS t;
SELECT id, (SELECT t1.parent_id FROM table1 AS t1 WHERE id =
(SELECT t2.parent_id FROM table1 AS t2 WHERE t2.id = t.parent_id
FROM table1 AS t;
Работает ли это в Access (помню там куча всяких ограничений в ихнем Jet-SQL'е не знаю.
(SELECT level2.name, Level2.ID, LevelN.ID from DBO_v_dic_dep level2, DBO_v_dic_dep level3, DBO_v_dic_dep levelN where levelN.parent_id=level3.id and levelN.level=4 and level3.parent_ID=level2.id)
union all
(SELECT level2.name, Level2.ID, LevelN.ID from DBO_v_dic_dep level2, DBO_v_dic_dep levelN where levelN.parent_id=level2.id and levelN.level=3)
Оставить комментарий
Usmanova72
Дана табличка ID, Parent_ID, Level, data.нужно для каждого ID вывести рядом ID родителя поределнного уровня.
ну потом на основе этого сформировать табличку.
ЗЫ, Все это надо сделать в ассess