Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL自连接以获取有序的父子记录_Php_Mysql_Hierarchical Data_Self Join - Fatal编程技术网

Php MySQL自连接以获取有序的父子记录

Php MySQL自连接以获取有序的父子记录,php,mysql,hierarchical-data,self-join,Php,Mysql,Hierarchical Data,Self Join,我有一个具有以下结构的表: +-----------+--------------+-----------+----------+ | member_id | household_id | firstName | lastName | +-----------+--------------+-----------+----------+ | 14122 | 0 | Cynthia | Bookout | +-----------+--------------+

我有一个具有以下结构的表:

+-----------+--------------+-----------+----------+
| 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  |
+-----------+--------------+-----------+----------+
成员id
家庭id
对于某些记录具有父子关系。例如,带有
成员id
14124的记录是
成员id
14122的子记录(即,其
家庭id
是其父项的
成员id

该表实际上包含数千条不按顺序排列的记录。我希望显示它们,以便父记录后面跟着它的子记录,然后显示下一个父记录及其子记录,依此类推。结果也需要按
成员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  |
+-----------+--------------+--------------+----------+

请尝试以下查询:

SELECT a.member_id as parent_id,
       a.firstName as parent_firstName,
       a.lastName as parent_lastName,
       b.member_id as child_id,
       b.firstName as child_firstName,
       b.lastName as child_lastName
FROM members a inner join members b on a.member_id = b.household_id
ORDER BY a.member_id

这不是我想要的!我希望父记录后跟子记录,每个记录在不同的行中。