2017-08-31 83 views
1

IM在包括由EmployeeID(INT)鍵控全體員工的所有名稱的Employee表的一個項目工作SQL內連接多個表到一個類似的關鍵

我也有一個工作表,其中包括作爲字符串的JobName以及鏈接回Employee表的Foreman,ProjectManager,Project Coordinator,AccountManager作爲INT。

我需要能夠從每個分配給作業的工作人員的員工表中拉出姓氏和姓氏。我試着下面的查詢沒有產生任何結果。

我失去了什麼....

SELECT 
    j.jobsitename, 
    j.jobsiteaddress, 
    CONCAT(RTRIM(e.empFirstName), ' ', RTRIM(e.empLastName)) AS Foreman, 
    CONCAT(RTRIM(pm.empFirstName), ' ', RTRIM(pm.empLastName)) AS ProjectManager, 
    CONCAT(RTRIM(pc.empFirstName), ' ', RTRIM(pc.empLastName)) AS ProjectCoordinator 
FROM 
    mpjob AS j 
    INNER JOIN mpEmployee AS e ON j.jobforeman = e.empemployeeid 
    INNER JOIN mpEmployee AS pm ON j.jobProjMgr = pm.empemployeeid 
    INNER JOIN mpEmployee AS pc ON j.jobProjCoord = pc.empemployeeid 
+3

您需要考慮員工沒有工頭(他/她是領班?),沒有項目經理(他/她是項目經理?)還是沒有有一個項目協調員(他/她是項目協調員?)。對於這些值中的任何一個值可以爲NULL的情況,您應該使用左連接(並且可能使用COALESCE顯示除NULL之外的其他值,例如N/A)。 –

+0

請使用以下鏈接作爲如何提出一個好問題的指南:https://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum /示例數據會很大 – Eli

回答

0
SELECT 
    j.jobsitename, 
    j.jobsiteaddress, 
    e.empFirstName as ForemanFirstName, 
    e.empLastName as ForemanLastName, 
    pm.empFirstName as PmFirstName, 
    pm.empLastName as PmLastName, 
    pc.empFirstName as PcFirstName, 
    pc.empLastName as PcLastName 
FROM mpjob AS j 
LEFT JOIN mpEmployee AS e ON j.jobforeman = e.empemployeeid 
LEFT JOIN mpEmployee AS pm ON j.jobProjMgr = pm.empemployeeid 
LEFT JOIN mpEmployee AS pc ON j.jobProjCoord = pc.empemployeeid 

LEFT JOIN這些值。 如果有工頭,PM和PC,INNER JOINs會返回這些值。即使沒有,LEFT JOIN也會顯示mpJob中的所有數據。

+0

工作 - 我會確保閱讀更多關於連接選項的信息。謝謝! –