[英]Parent child sql table show as table in php
I have table structure like this:我有这样的表结构:
ID Name ParentId
-------------------------
1 Root 0
2 Business 1
3 Finance 2
4 Stock 3
5 Any 3
6 One 0
7 Two 6
Is there any way to get all relation in one line?有什么方法可以将所有关系集中在一行中?
Like this:像这样:
+------------------------------------------------------------------------------------+
|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 | | | | |
Assuming your table has a name "htable" and as soon as there are up to FOUR (4) levels of hierarchy, it can be done like that using self join:假设您的表有一个名称“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;
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;
This query returns unnecessary NULLS, I only need the red squared rows to print.此查询返回不必要的 NULLS,我只需要打印红色方形行。
Image below.下图。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.