2013-12-22 83 views
0

我有一个mysql查询获取所有的父ID到子地图到一个数组,然后我有一个函数打印出所有的ID为父ID的子ID。在树结构中的递归php mysql巨大的查询

我现在想要完成的是使用此函数获取每个回显的子id的用户名。 并在可能的情况下对每个页面上的结果进行分页。

MySQL查询+函数来获取ID,以孩子的映射到数组:

$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。

回答

0

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

+0

我有成千上万的大多数父母id的孩子ID,查询每一行会让事情变得疯狂:D – user3117183

+0

是的,这是我的观点。所以,创建JOIN只有1个查询需要渲染所需的所有字段。 – sdespont

+0

那是怎么回事?你能写出例子吗?我需要rev_users表中的用户名字段,然后使用回显的子ID进行打印 – user3117183