Функция ifnull () в предложении where MYSQL - PullRequest
1 голос
/ 26 августа 2011

У меня есть две таблицы.

**Employee**
EmpId NOT NULL (PK)
Name NOT NULL
OrgID NULL (FK)

**Organisation**
OrgID NOT NULL (PK)
OrgName NOT NULL

Я хочу получить Name, OrgName с одним оператором select. но условие OrgID может быть пустым в таблице Employee. Так много записей без OrgID и записей с OrgID тоже.

Как получить все данные, передав EmpId одним оператором sql?

Спасибо.

Ответы [ 4 ]

3 голосов
/ 26 августа 2011

Используйте LEFT JOIN:

select e.name, o.OrgName 
from Employee e
left join Organisation o on o.OrgID = e.OrgID
where e.EmpId = ?; 

OrgName будет null в строках результата, если FK равно нулю.

1 голос
/ 26 августа 2011

Использование LEFT JOIN т.е.

SELECT
  e.Name,
  O.OrgName
FROM Employee e
LEFT JOIN Organisation O ON(O.OrgID = e.OrgID)
WHERE EmpId = x
0 голосов
/ 26 августа 2011
SELECT * FROM Employee 
LEFT JOIN Organisation ON 
    Employee.OrgID == Organisation.OrgID 
WHERE 
    EmpId = ?;

Эта ссылка предоставит вам более подробную информацию

РЕДАКТИРОВАТЬ: забыл включить пункт ГДЕ

0 голосов
/ 26 августа 2011

Это должно работать нормально:

SELECT 
  e.Name
  , o.OrgName 
FROM Employee AS e 
LEFT JOIN Organisation AS o ON e.OrgID=o.OrgID 
WHERE e.EmpId = ?;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...