2017-08-31 84 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

工作 - 我会确保阅读更多关于连接选项的信息。谢谢! –