如何使用递归查询MySQL创建分层树结构以及与其他表的内部联接操作

问题描述 投票:0回答:1

考虑此MySQL表:

表1

enter image description here

对于不支持通用表表达式的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,您可以使用任何示例:

php mysql sql laravel codeigniter
1个回答
0
投票

尝试此递归... 参考: enter link description here

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 ...;
检查enter link description here
© www.soinside.com 2019 - 2024. All rights reserved.