2012-07-16 21 views
1

我有三個表MySQL的有關使用員工與員工和零點加入

員工 EMPID INT PK empname VARCHAR

customersite EMPID INT PK FK 客戶ID INT PK FK STARTDATE日期PK ENDDATE日期

員工指派 custid int pk sitename varchar

我的問題是

如何顯示我們所有員工的姓名以及今天在客戶網站上的所有員工的網站名稱。對於今天不在客戶網站上的用戶,請顯示他們的名稱和「N/A」。

我迄今

SELECT 
e.EmpName, 
cs.SiteName 
FROM 
EmployeeAssignment ea 
INNER JOIN 
Employee e 
ON 
e.EmpId = ea.EmpId 
INNER JOIN 
CustomerSite cs 
ON 
cs.CustId = ea.CustId 

這讓我在工作中全體員工的今天,他們的名稱和網站。

你是非常讚賞的感謝

回答

1

你應該使用一個外任何幫助加盟,而不是內部的加入:

SELECT e.EmpName, IFNULL(cs.SiteName, 'N/A') AS SiteName 
FROM Employee e 
LEFT JOIN EmployeeAssignment ea ON e.EmpId = ea.EmpId 
LEFT JOIN CustomerSite cs ON cs.CustId = ea.CustId 

您可能還需要增加其他條件,例如限制日期。

+0

大部分工作必須交換到ISNULL,因爲我使用MySQL服務器。我怎麼能介紹那裏的日期,因爲如果我使用WHERE CLAUSE它會將選擇截止到今天只有工作人員 – 2012-07-16 11:37:21

+0

等待那裏計算出需要添加AND後e.EmpId = ea.EmpId。謝謝 – 2012-07-16 11:41:08

+0

'ISNULL'是Microsoft SQL Server語法。 MySQL使用'IFNULL'。是的,你可以使用'ON ... AND ...'來限制日期。 – 2012-07-16 11:42:49