【发布时间】:2021-02-23 04:22:18
【问题描述】:
我有一个员工表和部门表。
如果 dep_id 的状态列具有“A”,我想编写一个列出employee_ids 的查询。
例如:
对于employee_id = 1,我应该看到1,因为它的父dept_id(10) 的状态='A'
对于employee_id = 2,我应该看到2,因为它的父dept_id(200) 的状态='A'
对于employee_id = 5,我不应该是5,因为它的父母没有status = 'A'
Department Table
employee_id | dept_id | status |level
1 |10 | null | 1
2 |20 | null | 1
10 |100 | A | 2
20 |200 | null | 2
100 |1000 | null | 3
200 |2000 | A | 3
450 |750 | null | 1
5 |30 | null | 1
30 |300 | null | 2
3 |400 | A | 1
400 |4000 | null | 2
Employee Table
employee_id | employee_name
1 | steven
2 | jone
3 | eric
4 | mark
5 | harry
上面两个表的示例结果是:
| employee_id|
1
2
我的查询现在是这样的:
SELECT Employee.employee_id FROM Department
JOIN Employee ON Employee.employee_id = Department.employee_id;
【问题讨论】:
-
AFAIK 这是一个简单的附加
WHERE Department.status = 'A' -
它也给出 3,但其父部门不包含“A”。标准是父部门应包含“A”。查询应检查父部门
-
啊抱歉,没有像 @Tejash 那样实现对 dept_id = employee_id 的递归连接