2017-02-19 5 views
1

Я изучаю через MySQL Ver.5.7.17, пожалуйста, уточните мой нижний запрос.MySQL self join if null function

У меня есть сотрудники таблицы, которые содержат идентификаторы сотрудников и соответствующие идентификаторы менеджера, но у немногих сотрудников нет идентификаторов менеджера, поскольку они принадлежат к ролям менеджера.

Столбцы таблицы - это идентификатор сотрудника, имя, фамилия, идентификатор менеджера. Я разработал ниже запрос self join, который дает мне сотрудников с идентификаторами менеджера, но я ищу дополнительную информацию о менеджере (которые также являются сотрудниками), у которых нет идентификаторов менеджера (null).

SELECT E.EMPLOYEE_ID AS EMP_ID, CONCAT(E.FIRST_NAME,' ',E.LAST_NAME 
) AS EMP_NAME, 
M.EMPLOYEE_ID AS MGR_ID 
,CONCAT(M.FIRST_NAME,' ',M.LAST_NAME) AS MGR_NAME 
FROM EMPLOYEES AS E JOIN EMPLOYEES AS M 
ON (E.MANAGER_ID =M.EMPLOYEE_ID) ORDER BY MGR_ID 

Я попробовал функцию IF NULL в запросе, как показано ниже, и получил сообщение об ошибке ниже.

Код ошибки: 1064. У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с «NULL (M.EMPLOYEE_ID,« NO MGR ») AS MGR_ID, CONCAT (M.FIRST_NAME, '', M.LAST_NAME) AS 'в строке 2

SELECT E.EMPLOYEE_ID AS EMP_ID, CONCAT(E.FIRST_NAME,' ',E.LAST_NAME) AS EMP_NAME, 
IF NULL(M.EMPLOYEE_ID,'NO MGR') AS MGR_ID 
,CONCAT(M.FIRST_NAME,' ',M.LAST_NAME) AS MGR_NAME 
FROM EMPLOYEES AS E JOIN EMPLOYEES AS M 
ON (E.MANAGER_ID =M.EMPLOYEE_ID) ORDER BY MGR_ID 
+1

Нет функции IF NULL в mysql, вы ищете NULLIF – Mihai

ответ

0

Вы можете использовать COALESCE. Кроме того, я думаю, вам нужно левое соединение, чтобы получить те записи, которые не имеют менеджера:

select E.EMPLOYEE_ID as EMP_ID, 
    concat (E.FIRST_NAME,' ',E.LAST_NAME) as EMP_NAME, 
    coalesce(M.EMPLOYEE_ID, 'NO MGR') as MGR_ID, 
    concat (M.FIRST_NAME,' ',M.LAST_NAME) as MGR_NAME 
from EMPLOYEES as E 
left join EMPLOYEES as M on (E.MANAGER_ID = M.EMPLOYEE_ID) 
order by MGR_ID