2011-08-26 139 views
1

我有两个表。ifnull()函数where子句MYSQL

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

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

我想用一个select语句获取Name,OrgName。 但条件是OrgID在Employee表中可以为null。如此多的没有OrgID的记录和OrgID记录。

如何通过将EmpId传递给一个sql语句来获取所有数据?

谢谢。

+0

你的意思是你想显示所有的雇主oyees的名字,包括那些与组织无关的名字(他们的Employee.OrdId是NULL?) –

+0

yah。由于要求:) – kitokid

回答

3

使用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为null。

+0

谢谢。它的工作原理:) – kitokid

0

这应该很好地工作:

SELECT 
    e.Name 
    , o.OrgName 
FROM Employee AS e 
LEFT JOIN Organisation AS o ON e.OrgID=o.OrgID 
WHERE e.EmpId = ?; 
1

使用LEFT JOIN

SELECT 
    e.Name, 
    O.OrgName 
FROM Employee e 
LEFT JOIN Organisation O ON(O.OrgID = e.OrgID) 
WHERE EmpId = x 
0
SELECT * FROM Employee 
LEFT JOIN Organisation ON 
    Employee.OrgID == Organisation.OrgID 
WHERE 
    EmpId = ?; 

This link will give you more details

编辑:忘了包括WHERE子句

+0

它应该是**'='**,而不是'=='。 –