ВНУТРЕННЕЕ СОЕДИНЕНИЕ - PullRequest
       66

ВНУТРЕННЕЕ СОЕДИНЕНИЕ

0 голосов
/ 08 октября 2019

Я могу закодировать оператор выбора, который выполняет мой запрос. Однако я ищу столбец «DepartmentID», отображающий только уникальные значения.

Я пытаюсь использовать как «UNIQUE», так и «DISTINCT» в разных местах, но мне это не удается. Вот пример данных таблицы:

В выходных данных отображаются все записи "DepartmentID", но я хочу, чтобы отображались только записи с уникальными значениями.

1 Ответ

0 голосов
/ 08 октября 2019

Если под «уникальными» значениями вы подразумеваете отделы с одним сотрудником, то используйте агрегирование:

SELECT d.departmentid, d.departmentname, 
       MAX(e.FirstName || ' ' || e.LastName) AS Chair
FROM Employees e JOIN
     Departments d
     ON e.departmentid = d.departmentid 
GROUP BY d.departmentid, d.departmentname
HAVING COUNT(*) = 1
ORDER BY d.departmentid;

РЕДАКТИРОВАТЬ:

На основе вашего обновленного вопроса вам не нужноагрегация вообще. Только правильные JOIN условия:

SELECT d.departmentid, d.departmentname, 
       (e.FirstName || ' ' || e.LastName) AS Chair
FROM Employees e JOIN
     Departments d
     ON e.employeeid = d.departmentchair 
ORDER BY d.departmentid;
...