MySQL древовидная структура меню - PullRequest
0 голосов
/ 17 мая 2018

Я создал таблицу базы данных MySQL, в которой я хочу показать структуру меню на основе их родителя.Таблица выглядит так:

menu

id     menuname                     parentid
-----------------------------------------------
1      dashboard                         0
2      Content                           0
3      Home Page Content                 2
4      Banners                           2
5      Settings                          0
6      Block Content                     3
7      Site Content                      3

Чтобы структура меню выглядела следующим образом:

>dashboard
>Content
-->Home Page Content
  -->Block Content
  -->Site Content
-->Banners
>Settings

Я написал свой запрос, как показано ниже, который выдает дубликатстрок, а не в соответствии с приведенным выше ожиданием.

SELECT node.id, node.name 
FROM menu AS node, menu AS parent WHERE node.parentid = parent.parentid

PS: Обратите внимание, я сделал стрелки из-за вашего понимания.

1 Ответ

0 голосов
/ 17 мая 2018

Он не создает дублирующихся строк - он возвращает неверные данные. Должно быть:

SELECT node.id, node.name 
FROM menu AS node, menu AS parent WHERE node.parentid = parent.id

Кстати, ваши данные затрудняют поддержку глубокого / переменного вложения из SQL (но я согласен с Тимом, что потоки должны обрабатываться в другом месте). Существуют и другие способы представления иерархии в реляционной базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...