2011-08-26 341 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

它應該是**'='**,而不是'=='。 –