用Mapping将两个表连接起来并得到结果

时间:2019-02-15 04:27:10

标签: mysql sql hbase phoenix

我将HBase DB与phoenix一起使用,我有3个表,其中两个是Main表,它们之间有多对多的关系,由第三个表映射。

员工

    EmpID    EmpName
    1        Robert
    2        John
    3        Sansa
    4        Ned
    5        Tyrion
    6        George
    7        Daenerys
    8        Arya
    9        Cersie
    10       Catelyn

部门

    DepID    DepName
    1        Hardware
    2        Software
    3        Admin
    4        HR

部门员工映射

    ID  DepID   EmpID
    1   1       2
    2   1       6
    3   2       1
    4   3       5
    5   3       6
    6   4       3
    7   4       7
    8   4       10
    9   4       5

我想获取管理部门中所有员工的姓名和部门,但是我想要属于其他部门但不属于任何部门的那些员工的详细信息,这些数据应显示为结果集中为NULL仅显示管理部门的值,并且如果员工属于多个部门,则结果集应包含管理部门的值,而另一个将被忽略,结果集将类似于

    Emp Name    Dep Name
    Robert      NULL
    John        NULL
    Sansa       NULL
    Ned         NULL
    Tyrion      Admin
    George      Admin
    Daenerys    NULL
    Arya        NULL
    Cersie      NULL
    Catelyn     Admin

1 个答案:

答案 0 :(得分:0)

使用2个LEFT JOIN并在针对Department的联接中包括对“ Admin”的过滤

SELECT DISTINCT e.empname, d.depname
FROM Employee e
LEFT JOIN Department_Employee_Mapping x ON x.empid = e.id
LEFT JOIN Departmentd ON d.id = x.depid AND d.id = 3
相关问题