2013-12-22 126 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