我有一个名为People
:
id | name |parent_id
---+------+---------
1 | John | 0
2 | Jane | 1
3 | James| 1
4 | Jack | 0
5 | Jim | 4
6 | Jenny| 4
所以约翰是简和詹姆斯的父母。树是这样的。
John
-Jane
-James
Jack
-Jim
-Jenny
我想做一张看起来像的桌子
<table border="1">
<tr>
<th colspan="2">John</th>
</tr>
<tr>
<td>-</td><td>Jane</td>
</tr>
<tr>
<td>-</td><td>James</td>
</tr>
<tr>
<th colspan="2">Jack</th>
</tr>
<tr>
<td>-</td><td>Jim</td>
</tr>
<tr>
<td>-</td><td>Jenny</td>
</tr>
<table>
为此,我使用了两个 sql 查询。这是伪代码:
<?php
$firstQuery = 'SELECT id, name FROM People WHERE parent_id = 0';
start creating the table
while ($rowP = $result_parent->fetch())
{
//get the child rows using the second query in the loop:
$secondQuery = 'SELECT id, name FROM People WHERE parent_id = $rowP["id"]';
start creating table rows for child items.
while ($rowC = $result_child->fetch())
{
add names into the table belonging the current parent person
}
}
?>
所以问题就出现在这里。
这在性能方面是非常糟糕的方法。什么是正确的方法。
当我尝试使用父人员的 id 作为子人员查询的参数时,我收到有关
bind_param()
功能的错误。这可以通过一个 SQL 查询来完成
JOIN
。但我不知道该怎么做。