1

我有一个这样的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 的部门。这个人是顶级部门,没有父母,我想要的只是部门名称中的空值。到目前为止,我有这个查询

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;

目前,除了排名靠前的部门外,所有部门都被检索到,我该如何实现呢?

4

3 回答 3

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;
于 2013-09-26T10:52:51.557 回答
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 让我朝着正确的方向前进

克鲁兹

于 2013-09-26T11:07:56.300 回答
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;
于 2013-09-26T11:08:06.463 回答