2015-05-06 32 views
0

我需要幫助。我有一個名爲「任務」的表名,下面如何從表中顯示相關任務列表?

SNO Taskname parentid 
--------------------- 
46 Task-1  0 
47 Task-2 46 
48 Task-3 47 
49 Task-4 46 
50 task-5 47 
51 task-6 50 

例如,我在任務48頁,我們現在會顯示相關的任務沒有。所以,產量將是46,47,49,50,51

我嘗試下面的代碼,但它不工作:

function getTask($task_id) {      
    $rs=mysql_query("select task_id,taskname,p_id from task where task_id='".$task_id."'"); 
    $rs_req=mysql_fetch_array($rs) or die(mysql_error());      
    $reqt=$rs_req['p_id'];     
    return $reqt; 
} 

$task = getTask($task_id);    
$pid = $task; 
$related_tasks = [];     

while ($pid != 0) {     
    $pid = getTask($pid); 
    $relatedTasks[] = $pid; 
} 

print_r($relatedTasks); 
+1

它基本上是一個遞歸查詢。這可能是一個很好的起點:http://stackoverflow.com/q/5291054 –

+0

可能重複[如何創建一個MySQL分層遞歸查詢](http://stackoverflow.com/questions/20215744/how-to- create-a-mysql-hierarchical-recursive-query) – AdamMc331

回答

1

關係數據庫並不意味着處理遞歸查詢。

您可以通過選擇ID 48的第一行然後遞歸檢查parentId!= 0來執行此操作,如果是,則執行另一個查詢。類似於

$task = getTask(48); 
$related_tasks = []; 
while($task['parentID'] != 0) { 
    $task = getTask($task['parentId']); 
    $relatedTasks[] = $task; 
} 

看看How to create a MySQL hierarchical recursive query

+0

我試過了代碼,但沒有成功。我已更新問題 – IRAP

+0

中的代碼是否會出現某種錯誤?總體情況如何? – gotha