MySql Изменено дерево предзаказов для создания URL-адреса

Этот вопрос основан на моем предыдущем вопросе о stackoverflow . На этот раз я пытаюсь создать URL-адреса для всех строк в таблице страниц, используя метод модифицированного дерева предзаказов.

Вот таблицы MySql: [Примечание: я добавил столбец «parent», чтобы зрители понимали отношения родитель-потомок в таблице категорий. Фактический модифицированный метод дерева предзаказов не использует родительский столбец (отношения родитель-потомок)]

Таблица категорий :

Модифицированное дерево обхода порядка

Таблица страниц

таблица страниц

Я пытаюсь написать запрос mysql, который будет генерировать URL-адреса для всех строк в таблице страниц, используя таблицу категорий, создающую приведенный ниже результат.

Ожидаемые строки:

/content/article/array/oops/classes /content/article/array/oops/objects /content/article/php/index /content/article/php/quiz /content/article/php/strings/strstr /content/article/php/strings/str_substr /content/blog/something1 /content/blog/something2 /content/blog/java/test-java /content/blog/java/final-method /content/about-us /content/contact-us 

Вот что я пробовал в таблице категорий, ссылаясь на « Управление иерархическими данными в MySQL» . В приведенном ниже запросе SQL извлекается единственный путь для заголовка «oops» в таблице категорий.

 SELECT concat('/',group_concat(parent.title separator '/')) as url FROM category AS node, category AS parent WHERE node.lft BETWEEN parent.lft AND parent.rgt AND node.title = 'oops' ORDER BY parent.lft; 

Что-то вроде этого должно быть достаточно …

 SELECT CONCAT_WS('/',x.path,y.page_name) full_path FROM ( SELECT node.id, GROUP_CONCAT(parent.title ORDER BY parent.lft SEPARATOR '/') path FROM category node JOIN category parent ON node.lft BETWEEN parent.lft AND parent.rgt GROUP BY node.title ORDER BY node.lft ) x JOIN pages y ON y.category_id = x.id;