簡體   English   中英

使用mysql和php的兩級鄰接表

[英]Two level adjacency list using mysql and php

我創建了一個新任務,並為該任務分配了父代ID為100,一旦創建新任務ID為101。

現在我再次創建一個新任務,並將100或101分配給正在創建的新ID(102)

現在,當我創建ID為104的新任務時,它應該給我一個選擇以選擇100,101作為父任務ID,而不是102,因為102連接到101且101連接到100父ID

我該如何進行兩級訪問? 我的表結構是taskid,parenttask id,其中task id是autoincrement,主鍵

因此,當從數據庫獲取值時,如何過濾。 下面是我的代碼。

<select name="mastertaskid" size="1" id="mastertaskid" STYLE="width: 350px" >
<option>Select One</option>

<?php 

$q = "SELECT * FROM Tasks order by Task_id asc";        
$r = mysql_query ($db, $q

if (mysql_num_rows($r) > 0) {
  while ($row = mysql_fetch_array ($r, MYSQLI_NUM)) {
    echo "<option value=\"$row[0]\"";
    // Check for stickyness:
    if (isset($return_val['ParentTask_Id']) 
       && ($return_val['ParentTask_Id'] == $row[0]) ) 
       echo ' selected="selected"'; 
    echo ">$row[1](<b>$row[0]</b>)</option>\n";
  }
}                                   
?>
</select>

這應該可以解決問題:

SELECT * FROM `Tasks` 
WHERE `ParentTask_id` = 0 OR `ParentTask_id` IN 
(SELECT `Task_id` FROM `Tasks` WHERE `ParentTask_id` = 0)

... WHERE parent_task_id = 0 (或該列的默認值是什么)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM