Oracle 如何仅有条件地联接多个表中的某些表?
我需要按ID查找有关个人的数据,数据可以在两个表中的任意一个表中—客户表或员工表。我有一个值,显示在哪个表中查找该人员。此外,此搜索需要包含在更大的查询中 似乎应该编写某种类型的条件联接。但如何做到这一点呢?我一直在谷歌上搜索,什么也没找到。我需要一些类似的东西Oracle 如何仅有条件地联接多个表中的某些表?,oracle,plsql,Oracle,Plsql,我需要按ID查找有关个人的数据,数据可以在两个表中的任意一个表中—客户表或员工表。我有一个值,显示在哪个表中查找该人员。此外,此搜索需要包含在更大的查询中 似乎应该编写某种类型的条件联接。但如何做到这一点呢?我一直在谷歌上搜索,什么也没找到。我需要一些类似的东西 if person_type = 0 then outer left join customers_table elsif person_type = 1 then outer left join employees_table 外部
if person_type = 0 then outer left join customers_table
elsif person_type = 1 then outer left join employees_table
外部连接,包括附加条件 第1-14行代表样本数据;您需要的查询从第15行开始
SQL> with
2 person (id, name, person_type) as
3 (select 1, 'Scott', 0 from dual union all
4 select 2, 'King' , 1 from dual
5 ),
6 customers (id, name) as
7 (select 1, 'Customer Scott' from dual union all
8 select 2, 'Customer King' from dual
9 ),
10 employees (id, name) as
11 (select 1, 'Employee Scott' from dual union all
12 select 2, 'Employee King' from dual
13 )
14 --
15 select p.id, p.name, p.person_type,
16 nvl(c.name, e.name) cust_emp_name
17 from person p left join customers c on p.id = c.id and p.person_type = 0
18 left join employees e on p.id = e.id and p.person_type = 1
19 order by p.id;
ID NAME PERSON_TYPE CUST_EMP_NAME
---------- ----- ----------- --------------
1 Scott 0 Customer Scott
2 King 1 Employee King
SQL>