Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.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
如何使用PDO从PHP中的单个select语句将子项分配给父项?_Php - Fatal编程技术网

如何使用PDO从PHP中的单个select语句将子项分配给父项?

如何使用PDO从PHP中的单个select语句将子项分配给父项?,php,Php,我试图使用一个select语句从我的数据库中获取父母和孩子。父项的父项id为0,子项的父项id与父项的分配id相对应 这就是我的桌子目前的样子 id parent_id title 10 0 TREES 11 0 FLOWERS 12 10 PINE 13 10 WALNUT 14 10 GIANT SEQUOIA

我试图使用一个select语句从我的数据库中获取父母和孩子。父项的父项id为0,子项的父项id与父项的分配id相对应

这就是我的桌子目前的样子

id      parent_id     title
10      0             TREES
11      0             FLOWERS
12      10            PINE
13      10            WALNUT
14      10            GIANT SEQUOIA
15      11            ROSE
16      11            ORCHIDS
17      10            CACAO
我可以做一个简单的:

SELECT * FROM earth WHERE parent_id = 0
然后循环遍历结果并得到孩子们

SELECT * FROM earth WHERE parent_id = :id_from_parent
但我想知道是否有可能用一个select语句和使用更有效地实现它

fetchAll(PDO::FETCH_GROUP)

使用fetch group时,我确实会获取组,但父级在其自己的类别0中设置,然后子级按其父级类别进行分组

您可以使用此查询一次获取每个父级的所有子级:

SELECT e1.title AS parent, e2.title AS child
FROM earth e1
JOIN earth e2 ON e2.parent_id = e1.id
ORDER BY e1.id
当与PDO::FETCH_列| PDO::FETCH_组一起使用时,这将产生如下结果

array('TREES' => array('WALNUT','GIANT SEQUOIA','CACAO','PINE'),
      'FLOWERS' => array('ORCHIDS','ROSE')
     )