Mysql Выбирает в вложенных циклах

У меня есть таблица под названием 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 } } ?> 

Поэтому проблема здесь поднимается.

  1. Это очень плохой подход в отношении производительности. Каков правильный путь.

  2. Когда я пытаюсь использовать идентификатор родительского лица в качестве параметра для запроса дочерних людей, я получаю сообщение об ошибке в функции bind_param() .

  3. Это можно сделать только с одним SQL-запросом с помощью операции JOIN . Но я не знаю, как это сделать.