【问题标题】:Oracle : How to join 2 tables by one value from fist table with another table where condition valueOracle:如何通过第一个表中的一个值与另一个条件值的表连接 2 个表
【发布时间】:2021-09-02 19:42:36
【问题描述】:

亲爱的大家都有经验,

我有 2 个表尝试加入条件。第一张桌子。员工表: select emp_id, emp_code, section_id, party_id, admin_type from employee

ID | Emp_Code | Section_ID | Party_ID | Admin_Type
1  | emp01    | sec01      | part01   | Null
2  | emp02    | sec01      | part01   | Null
3  | emp03    | sec02      | part02   | Null
4  | emp04    | sec01      | part01   | A
5  | emp05    | sec02      | part02   | B
6  | emp06    | sec01      | part01   | C

第二个表是Admin组

ID | Admin_Type | Group
1  | A          | 1
2  | B          | 2
3  | C          | 1

数据很复杂,值很多,所以我尝试通过匹配来加入每个emp中的条件 每个 emp_code 中的 section_id 和 party_id(将值固定到 where 子句中)。

select g.admin_type, g.group, e.emp_code as Admin from group_admin as g
left join employee e on e.admin_type = g.admin_type
where e.section_id in (select section_id from employee where emp_code = 'emp01')
and e.party_id = (select party_id from employee where emp_code = 'emp01')
and g.group = '1' and admin_type is not null;

上面查询的结果是 emp_code = emp01' 的管理员,如下表所示

Admin_Type | Group | Admin
A          | 1     | emp04
C          | 1     | emp06

我尝试通过为所有 emp_code 与 empcode 连接绘制一个表来构建 oracle 存储过程,其中 admin_code 只有相同的 section_id 和 party_id,如下所示。

Emp_Code |  Section_ID | Party_ID | Admin_Type  --- | Admin  | Group | Admin_Type
emp01    |  sec01      | part01   | NULL        --- | emp04 | 1     | A
emp01    |  sec01      | part01   | NULL        --- | emp06 | 1     | C
emp02    |  sec01      | part01   | NULL        --- | emp04 | 1     | A
emp02    |  sec01      | part01   | NULL        --- | emp06 | 1     | C
emp03    |  sec02      | part02   | NULL        --- | emp05 | 1     | B

【问题讨论】:

  • 这里没有问题。你问的是什么问题?
  • 请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。
  • 我的问题是尝试使用与上一张表相同的 section_id 和 party_id 编写 sql join。

标签: sql oracle


【解决方案1】:

我相信这是您加入到员工表中存在的部分类型和管理代码

作为此查询结果的表

SELECT EmpCode, Section_ID, Admin_Type 
FROM employee
WHERE Admin_Type is not null

那就加入吧:

SELECT e.Emp_Code, e.Section_ID, e.Party_ID, e.Admin_Type, sub.Admin, sub.Group, sub.Admin_Type
FROM employee as E
LEFT JOIN (
  SELECT EmpCode as Admin, Group, Section_ID, Admin_Type 
  FROM employee
  WHERE Admin_Type is not null
) sub ON sub.Section_ID = e.Section_ID 

【讨论】:

  • 感谢 Hogan 提出现有关系是 Section 和 Party 的想法,并且我找到了完整的查询,所以我有一个或两个表来映射 Admin 组,但这不是问题。
  • @HKjens -- 如果这解决了您的问题,您应该投票并用复选标记将其标记为解决方案。
  • 好的,但我的声誉无法达到该任务投票,然后我尝试提升我的水平。
猜你喜欢
  • 1970-01-01
  • 2017-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多