2015-05-06 5 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, теперь мы бы показать соответствующие задачи нет. из 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

реляционные базы данных не предназначены для решения рекурсивных запросов.

Вы можете сделать это, выбрав первую строку с идентификатором 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

Смежные вопросы