我有一个像这样的mysql表
+---------+----------------+-------+------------+
| dept_id | parent_dept_id | level | name |
+---------+----------------+-------+------------+
| 1 | 0 | 0 | Company |
| 2 | 1 | 1 | HR |
| 3 | 1 | 1 | Finance |
| 4 | 1 | 1 | Operations |
| 5 | 4 | 2 | Sales |
| 6 | 2 | 2 | Training |
+---------+----------------+-------+------------+
我正在尝试检索所有部门及其父部门。但我还想要的是检索ID为1的deprtment。这个人是顶级部门,没有父级,我想要的只是部门名称中的null。 到目前为止,我有这个查询
select
d1.dept_id,
d2.name as parent_name,
d1.parent_dept_id,
d1.level,
d1.name
from
tdept d1,
tdept d2
where
d1.parent_dept_id = d2.dept_id;
目前,除了最重要的部门之外,所有部门都会被检索,我该如何实现?
答案 0 :(得分:4)
尝试使用LEFT OUTER JOIN(LEFT JOIN关键字返回左表(table1)中的所有行,右表(table2)中的匹配行。当没有匹配时,结果在右侧为NULL 。)
select
d1.dept_id,
d2.name as parent_name,
d1.parent_dept_id,
d1.level,
d1.name
from tdept d1
Left outer join tdept d2
where d1.parent_dept_id = d2.dept_id;
答案 1 :(得分:0)
好的,我开始工作,我这样做了:
select
d1.dept_id,
d2.name as parent_name,
d1.parent_dept_id,
d1.level,
d1.name
from
tdept d1 left outer join tdept d2 on d1.parent_dept_id = d2.dept_id;
感谢Nadeem_MK让我朝着正确的方向前进
Crouz
答案 2 :(得分:0)
尝试这样的事情:
select
t1.dept_id,
t2.name,
t1.parent_dept_id,
t1.level,
t1.name
from tdept t1
Left outer join tdept t2
ON t1.parent_dept_id = t2.dept_id;