如何使用PDO从PHP中的单个select语句将子项分配给父项?
我试图使用一个select语句从我的数据库中获取父母和孩子。父项的父项id为0,子项的父项id与父项的分配id相对应 这就是我的桌子目前的样子如何使用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
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')
)