Соедините две таблицы с Mapping и получите результат - PullRequest
0 голосов
/ 15 февраля 2019

Я использую HBase DB с Фениксом, у меня есть 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

1 Ответ

0 голосов
/ 15 февраля 2019

Используйте 2 LEFT JOIN и включите фильтрацию '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
...