WITH RECURSIVE tb_deptrelation (dept_id, dept_f, deptpath) AS ( -- 初始查询 SELECT t1.dept_id, t1.dept_f, t1.dept_id FROM db_attendance.tb_dept AS t1 WHERE dept_f IS NULL UNION ALL -- 递归查询 SELECT t2.dept_id, t2.dept_f, t3.deptpath + '-' + t2.dept_f FROM db_attendance.tb_dept AS t2 JOIN tb_deptrelation t3 ON t2.dept_f = t3.dept_id ) SELECT dept_id, dept_f, deptpath FROM tb_deptrelation;哪有问题
时间: 2024-04-14 18:27:13 浏览: 140
dfs.zip_DFS non recursive_DFS structure_DFS.cpp_Depth-First Sear
根据你提供的查询语句,我注意到可能会有一个问题。在递归查询的第二个SELECT语句中,连接条件 `t2.dept_f = t3.dept_id` 可能是错误的。这取决于 `tb_dept` 表的结构和字段定义。
如果 `dept_f` 字段在 `tb_dept` 表中表示部门的父级部门ID,那么连接条件应该是 `t2.dept_id = t3.dept_id` 而不是 `t2.dept_f = t3.dept_id`。
请确保连接条件正确匹配表结构和字段定义。修改后的查询语句如下:
```sql
WITH RECURSIVE tb_deptrelation (dept_id, dept_f, deptpath) AS (
-- 初始查询
SELECT t1.dept_id, t1.dept_f, t1.dept_id
FROM db_attendance.tb_dept AS t1
WHERE dept_f IS NULL
UNION ALL
-- 递归查询
SELECT t2.dept_id, t2.dept_f, t3.deptpath + '-' + t2.dept_f
FROM db_attendance.tb_dept AS t2
JOIN tb_deptrelation t3 ON t2.dept_id = t3.dept_id
)
SELECT dept_id, dept_f, deptpath
FROM tb_deptrelation;
```
请确保连接条件正确,并根据你的表结构做出适当的修改。希望这可以解决问题!如有其他问题,请随时提问。
阅读全文