Возвращает имя столбца, в котором условие соединения равно нулю - PullRequest
0 голосов
/ 16 ноября 2010

У меня есть 2 таблицы: Сотрудник и Персона со структурой

Employee: Id, PersonId, Designation, IsActive
Person:Id, Name, Contact

Ссылка на столбец PersonId сотрудника Идентификатор сотрудника и может быть нулевой

Мне нужно вернуть Имя сотрудника и критерии моего присоединенияis

SELECT emp.Salary, emp.Designation, emp.IsActive, p.Name from Employee emp
JOIN Person P ON P.Id = emp.PersonId or (p.Id is NULL AND emp.Id IS NULL)

Это неверно, так как мое требование:

If emp.PersonId = null, return p.Name = NULL
else return p.Name = Person's Name from table

Есть ли какие-либо указатели на это?

1 Ответ

2 голосов
/ 16 ноября 2010

вам нужно внешнее соединение

SELECT emp.Salary, emp.Designation, emp.IsActive, p.Name 
from Employee emp
left JOIN Person P 
ON P.Id = emp.PersonId 

когда вы используете INNER JOIN (или JOIN), вы выбираете только те строки, которые соответствуют критериям соединения, в вашем примере вы никогда не добавите имя NULL Person, потому что, если Employee не связан с Person, эта запись не будет выбран.

Если вы используете OUTER JOIN (LEFT / RIGHT JOIN), будет выбрана ВСЕ запись из главной таблицы (1-я с LEFT и 2-я с RIGHT).

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...