簡體   English   中英

如何使用遞歸查詢 MySQL 創建分層樹結構以及與另一個表的內部連接操作

[英]How to create hierarchical tree structure and also inner join operation with another table using recursive query a MySQL

考慮這個 MySQL 表:

表格1

在此處輸入圖片說明

對於不支持 Common Table Expressions 的 MySQL 版本(最高版本 5.7),您可以使用以下查詢來實現:

select  id,
        username,
        sponser_id
from    (select * from db_users
         order by sponser_id, id) products_sorted,
        (select @pv := '5') initialisation
where   find_in_set(sponser_id, @pv)
and     length(@pv := concat(@pv, ',', id));

我想修改此查詢以與另一個表執行內部聯接操作。

表 2 對於表 2,您可以舉任何示例:

試試這個遞歸......參考: 在此處輸入鏈接描述

function recursiveCheck($src_arr, $parent_id=0, $tree = array())
{
    foreach($src_arr as $idx => $row)
    {
        if($row['parent_id'] == $parent_id)
        {
            foreach($row as $k => $v)
                $tree[$row['user_id']][$k] = $v;
            unset($src_arr[$idx]);
            $tree[$row['user_id']]['children'] = $this->recursiveCheck($src_arr, $row['user_id']);
        }
    }
    ksort($tree);
    return $tree;
}

$query = "Select * From tablename";

$result = mysqli_query($connect,$query);
$data = array();
while($row = mysqli_fetch_assoc($result)) {
    array_push($data,$row);
}


echo '<pre>';
print_r(recursiveCheck($data));
echo '</pre>';

對於內部連接,你可以做

SELECT
select_list
FROM t1 INNER JOIN t2 ON join_condition1
INNER JOIN t3 ON join_condition2
...;

檢查在此處輸入鏈接描述

暫無
暫無

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

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