Родительский дочерний элемент sql таблица отображается как таблица в php - PullRequest
0 голосов
/ 10 июля 2020

У меня такая структура таблицы:

ID    Name     ParentId
-------------------------
1     Root      0
2     Business  1
3     Finance   2
4     Stock     3
5     Any       3
6     One       0
7     Two       6

Есть ли способ получить все отношения в одной строке?

Вот так:

+------------------------------------------------------------------------------------+
|ID        | NAME       |    ID     | NAME      | ID       | NAME    | ID     | NAME |
|----------|------------|-----------|-----------|----------|---------|--------|------|
| 1        | Root       | 2         | Business  | 3        | Finance | 4      | Stock|
| 1        | Root       | 2         | Business  | 3        | Finance | 4      | Any  |     
| 1        | One        | 6         | Two       |          |         |        |      |

Ответы [ 2 ]

0 голосов
/ 10 июля 2020
SELECT  level1.ID, level1.Name,
        level2.ID, level2.Name,
        level3.ID, level3.Name,
        level4.ID, level4.Name
FROM htable AS level1
LEFT JOIN htable AS level2 ON level1.ID = level2.ParentId
LEFT JOIN htable AS level3 ON level2.ID = level3.ParentId
LEFT JOIN htable AS level4 ON level3.ID = level4.ParentId;

Этот запрос возвращает ненужные значения NULL, мне нужны только красные квадратные строки для печати. ​​

Изображение ниже.

возвращенные значения

0 голосов
/ 10 июля 2020

Предположим, что ваша таблица имеет имя «htable», и как только существует до ЧЕТЫРЕХ (4) уровней иерархии, это можно сделать, используя самостоятельное соединение:

SELECT  level1.ID, level1.Name,
        level2.ID, level2.Name,
        level3.ID, level3.Name,
        level4.ID, level4.Name
FROM htable AS level1
LEFT JOIN htable AS level2 ON level1.ID = level2.ParentId
LEFT JOIN htable AS level3 ON level2.ID = level3.ParentId
LEFT JOIN htable AS level4 ON level3.ID = level4.ParentId;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...