Mysql 获取父节点的所有子节点
我有一个树状视图,它是从。下面是我的树视图 桌子 我想做什么 我想通过MySQL查询选择Floor-1的所有子节点 我已尝试运行如下查询Mysql 获取父节点的所有子节点,mysql,treeview,yii2-advanced-app,kartik-v,Mysql,Treeview,Yii2 Advanced App,Kartik V,我有一个树状视图,它是从。下面是我的树视图 桌子 我想做什么 我想通过MySQL查询选择Floor-1的所有子节点 我已尝试运行如下查询 SELECT * FROM `mdc_node` m WHERE m.`lft` = 11-2 输出 期望输出 我想要以下输出 ------------------------------------------------------------ | `id` | `root` | `lft` | `rgt` | `lvl` | `name` | '
SELECT * FROM `mdc_node` m
WHERE m.`lft` = 11-2
输出
期望输出
我想要以下输出
------------------------------------------------------------
| `id` | `root` | `lft` | `rgt` | `lvl` | `name` | 'icon' |
------------------------------------------------------------
| 3 | 1 | 3 | 4 | 2 |GIS Office| folder |
| 4 | 1 | 5 | 6 | 2 | Ali | user |
| 5 | 1 | 7 | 8 | 2 | Usman | user |
| 6 | 1 | 9 | 10 | 2 | Faisal | user |
------------------------------------------------------------
下面是我的SQL小提琴
我想选择父节点下的所有子节点
我想通过MySQL查询选择Floor-1的所有子节点
我想要以下输出
------------------------------------------------------------
| `id` | `root` | `lft` | `rgt` | `lvl` | `name` | 'icon' |
------------------------------------------------------------
| 3 | 1 | 3 | 4 | 2 |GIS Office| folder |
| 4 | 1 | 5 | 6 | 2 | Ali | user |
| 5 | 1 | 7 | 8 | 2 | Usman | user |
| 6 | 1 | 9 | 10 | 2 | Faisal | user |
------------------------------------------------------------
从mdc_节点中选择*;
选择t1.id、t1.root、t1.lft、t1.rgt、t1.lvl、t1.name、t1.icon
-从表的第一个副本开始
来自mdc_节点t1
-加入用于获取所需父级信息的表的第二个副本
加入mdc_节点t2
-左侧和右侧的子节点位于其父节点的左侧和右侧之间
关于t2.lft和t2.rgt之间的t1.lft
-我们只需要下一个层次
t1.lvl=t2.lvl+1
-指定父项
其中t2.name=‘楼层1’;
唯一的问题-我无法理解为什么行id=3的图标在输出中是“文件夹”,而在源数据中是“用户”。请:用创建表+插入脚本或创建在线小提琴替换图片;以文本表格形式为过账数据添加所需输出;指定精确的MySQL版本。@Akina我添加了itI未看到:1以文本表形式发布数据的所需输出2精确的MySQL版本。与问题无关的列可能会被跳过,或者最好从小提琴上删除。@Akina我确实需要所有字段。为了让事情更简单,我刚刚发布了其中的一些。请参阅我编辑的问题,这是因为1楼是user@Faisal如果是这样的话,我对您的存储结构理解有误,似乎。。。返回的所有4个节点都具有相同的级别和相同的父节点-为什么仅在id=3时将图标设置为“文件夹”?在屏幕截图中,所有4个子节点都是完全相等的,并且可以正式交换…级别将始终相同,因为级别从级别为1的父节点开始,之后每当添加新节点时,其级别将为父节点级别+1。至于icon,我遵循的是一个层次结构Building=>Floor=>Customer。你可以进一步阅读它在我已经添加了一个新的节点,然后在它下面添加了一个子节点。之后,我运行你的脚本。但它也向我展示了第二个节点的子节点,这是@Faisal,我添加了一个新节点,然后在它下面添加了一个子节点。之后,我运行你的脚本。但它向我展示了,第二个节点的子节点,以及Oops,存储方案稍微有些不同。查询已编辑-查看。