SQL查询在oracle DB中连接两个没有公共列的表

时间:2018-06-13 19:20:27

标签: sql oracle

我有2个表employeejob_role,如下所示。我需要编写一个SQL查询,通过加入此表来查找每个员工的名称。

输入表

员工

e_id    e_name  Salary
-----------------------
1       ABC     1000
2       CDE     2000
3       GHI     3500
4       JKL     5000
5       MNO     4000
6       XYZ     3000

Job_role

Designation   Sal_min   Sal_max
-------------------------------
Associate      1000      2000
Lead           2001      3000
Manager        3001      5000

问题:如果来自employee表的薪水在sal_minsal_max的范围内,请找到指定

期望的输出:

e_id    e_name  Salary  Designation
-----------------------------------    
 1      ABC     1000    Associate
 2      CDE     2000    Associate
 3      GHI     3500    Manager
 4      JKL     5000    Manager
 5      MNO     4000    Manager
 6      XYZ     3000    Lead

1 个答案:

答案 0 :(得分:3)

ON子句可以包含除=之外的其他操作。在这里,您可以使用<=>=(或BETWEEN,如果您愿意的话)。

SELECT E.E_ID,
       E.E_NAME,
       JR.DESIGNATION
       FROM EMPLOYEE E
            LEFT JOIN JOB_ROLE JR
                      ON JR.SAL_MIN <= E.SALARY
                         AND JR.SAL_MAX >= E.SALARY;

(注意:我使用LEFT JOIN表示有任何员工薪水不匹配的情况。我猜你宁愿用NULL指定他们而不是所有。)