У меня есть таблица со следующей структурой:
+-----------+--------------+-----------+----------+
| member_id | household_id | firstName | lastName |
+-----------+--------------+-----------+----------+
| 14122 | 0 | Cynthia | Bookout |
+-----------+--------------+-----------+----------+
| 14123 | 0 | Kim | Caves |
+-----------+--------------+-----------+----------+
| 14124 | 14122 | Marvin | Bookout |
+-----------+--------------+-----------+----------+
| 14125 | 13974 | Stacey | Webb |
+-----------+--------------+-----------+----------+
| 14126 | 13974 | Nathan | Webb |
+-----------+--------------+-----------+----------+
| 14127 | 13974 | Adam | Webb |
+-----------+--------------+-----------+----------+
| 14128 | 13974 | Thomas | Webb |
+-----------+--------------+-----------+----------+
| 14129 | 0 | Missy | Hammock |
+-----------+--------------+-----------+----------+
| 14130 | 0 | Stephanie | Lewis |
+-----------+--------------+-----------+----------+
| 14131 | 0 | Kelly | Hutto |
+-----------+--------------+-----------+----------+
| 14132 | 14130 | James | Lewis |
+-----------+--------------+-----------+----------+
| 14133 | 0 | Cindy | Barnwell |
+-----------+--------------+-----------+----------+
| 14134 | 13828 | NATALIE | MCMILLAN |
+-----------+--------------+-----------+----------+
| 14135 | 13828 | Steven | Adams |
+-----------+--------------+-----------+----------+
| 14136 | 0 | Katherine | Gaskins |
+-----------+--------------+-----------+----------+
member_id
и household_id
имеют отношения родитель-потомок для определенных записей.Как, например, запись с member_id 14124 является дочерней по отношению к member_id 14122 (т. Е. Ее Идентификатор_домена - это member_id его родителя).
Таблица на самом деле содержит тысячи записей, которые не в порядке.Я хочу отобразить их так, чтобы за родителем следовали его дочерние записи, а затем появлялись следующий родитель и его дочерние записи и так далее.Результат также должен быть отсортирован по member_id.
Я пробовал это:
SELECT * FROM members WHERE household_id IN (SELECT member_id FROM members WHERE household_id = 0) OR household_id = 0
ORDER BY member_id
Но не повезло, получая желаемые результаты.Выполнение этого программно с использованием PHP занимает слишком много времени, так как мне приходится многократно повторять каждую запись.Любая помощь будет оценена.Спасибо заранее.
Редактировать: Это мой желаемый результат:
+-----------+--------------+--------------+----------+
| member_id | household_id | firstName | lastName |
+-----------+--------------+--------------+----------+
| 14122 | 0 | Cynthia | Bookout |
+-----------+--------------+--------------+----------+
| 14124 | 14122 | Marvin Keith | Bookout |
+-----------+--------------+--------------+----------+
| 14123 | 0 | Kim | Caves |
+-----------+--------------+--------------+----------+
| 14125 | 13974 | Stacey | Webb |
+-----------+--------------+--------------+----------+
| 14126 | 13974 | Nathan | Webb |
+-----------+--------------+--------------+----------+
| 14127 | 13974 | Adam | Webb |
+-----------+--------------+--------------+----------+
| 14128 | 13974 | Thomas | Webb |
+-----------+--------------+--------------+----------+
| 14129 | 0 | Missy | Hammock |
+-----------+--------------+--------------+----------+
| 14130 | 0 | Stephanie | Lewis |
+-----------+--------------+--------------+----------+
| 14132 | 14130 | James | Lewis |
+-----------+--------------+--------------+----------+
| 14131 | 0 | Kelly | Hutto |
+-----------+--------------+--------------+----------+
| 14133 | 0 | Cindy | Barnwell |
+-----------+--------------+--------------+----------+
| 14134 | 13828 | NATALIE | MCMILLAN |
+-----------+--------------+--------------+----------+
| 14135 | 13828 | Steven | Adams |
+-----------+--------------+--------------+----------+
| 14136 | 0 | Katherine | Gaskins |
+-----------+--------------+--------------+----------+