【问题标题】:Join two tables with Mapping and get result使用 Mapping 连接两个表并获取结果
【发布时间】:2019-02-15 04:27:10
【问题描述】:

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

员工

    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

Department_Employee_Mapping

    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

【问题讨论】:

    标签: mysql sql hbase phoenix


    【解决方案1】:

    使用 2 LEFT JOIN 并在针对部门的联接中包含对“管理员”的过滤

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-12
      • 1970-01-01
      • 2012-01-13
      相关资源
      最近更新 更多