递归php mysql在树结构中的巨大查询

时间:2013-12-22 21:30:48

标签: php mysql recursion nested hierarchical-data

我有mysql查询将所有父ID到子映射到数组中,然后我有一个函数来打印父ID的所有子id。

我现在要完成的是使用此函数获取每个回显子ID的用户名。 并且如果可能的话,在每个页面上对结果进行分页。

mysql查询+函数将ids映射到数组:

$res = $db->query('SELECT p.id AS parent, GROUP_CONCAT( c.id ) AS children
 FROM rev_r_clients AS p
 JOIN rev_r_clients AS c ON c.parent_client_id = p.id
 GROUP BY p.id');

 $parents = Array();
 while($row = $res->fetch_assoc()) {
 $parents[$row['parent']] = explode(',',$row['children']);
}

现在打印出特定父ID的子项的函数:

function subtree($id, $parents) { 
 echo $id;
 echo ' <br> ';
 if (isset($parents[$id]))
 foreach ($parents[$id] as $child) 
{
 subtree($child, $parents);
}

现在知道如何从另一个MYSQL表中获取用户名(rev_users) 如果可能的话,在每个页面上对结果进行分页?

无法对每一行进行查询,因为结果很大,每个父ID都有数千个子ID。

1 个答案:

答案 0 :(得分:0)

重写您的查询以返回您需要的所有字段。对游标的每一行执行一个新查询不是解决方案,而是一种解决方法。