У меня есть таблица с именем, как People
:Mysql Выбор в вложенных циклов
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
}
}
?>
Так что проблема здесь поднимается.
Это очень плохой подход в плане производительности. Каков правильный путь.
Когда я пытаюсь использовать идентификатор родительского лица в качестве параметра для запроса дочерних людей, я получаю сообщение об ошибке
bind_param()
.Это может быть сделано только с одним SQL-запросом с операцией
JOIN
. Но я не знаю, как это сделать.
Я знаю, что страницы, но не выяснить кое-что для моей проблемы. – zkanoca