У меня есть таблица папок, которая присоединяется к себе по отношению id
, parent_id
:
CREATE TABLE folders (
id int(10) unsigned NOT NULL AUTO_INCREMENT,
title nvarchar(255) NOT NULL,
parent_id int(10) unsigned DEFAULT NULL,
PRIMARY KEY (id)
);
INSERT INTO folders(id, title, parent_id) VALUES(1, 'root', null);
INSERT INTO folders(id, title, parent_id) values(2, 'one', 1);
INSERT INTO folders(id, title, parent_id) values(3, 'target', 2);
INSERT INTO folders(id, title, parent_id) values(4, 'child one', 3);
INSERT INTO folders(id, title, parent_id) values(5, 'child two', 3);
INSERT INTO folders(id, title, parent_id) values(6, 'root 2', null);
INSERT INTO folders(id, title, parent_id) values(7, 'other child one', 6);
INSERT INTO folders(id, title, parent_id) values(8, 'other child two', 6);
Я хочу запрос, который возвращает всех родителей этой записи, обратно к маршруту и любых детей.
Поэтому, если я запрашиваю папку с id=3
, я получаю записи: 1, 2, 3, 4, 5
. Я застрял, как получить родителей.
Версия MYSQL 5.7, и нет никаких планов по обновлению, так что, к сожалению, CTE не вариант.
Я создал эту скрипку sql