如何从表中显示相关任务列表?

时间:2015-05-06 16:22:38

标签: php mysql sql

我需要帮助。我在

下面有名为“任务”的表名

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 个答案:

答案 0 :(得分: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

相关问题