父子 sql table 在 php 中显示为 table
Parent child sql table show as table in php
我有这样的 table 结构:
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 | | | | |
假设您的 table 有一个名称“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;
这个查询returns不需要NULLS,我只需要打印红色方块行。
下图。
returned values
我有这样的 table 结构:
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 | | | | |
假设您的 table 有一个名称“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;
这个查询returns不需要NULLS,我只需要打印红色方块行。
下图。
returned values