Sql 仅返回包含两个联接的第一个表的结果

Sql 仅返回包含两个联接的第一个表的结果,sql,sql-server,join,Sql,Sql Server,Join,我有三张桌子。我需要从第一个表中获取lastname、firstname和employee number,并从另一个表中获取name 为了获得表s上的名称,表s和表sw上的slsrep列之间需要匹配 问题是我只想返回第一个表(p)中的行。第一个表中只有700条记录,但却有900条 基本上,我只想查看表p中的每一行,并匹配表s中的名称 这就是我目前拥有的: SELECT p.LastName, p.FirstName, p.EmpNo, s.Name FR

我有三张桌子。我需要从第一个表中获取lastname、firstname和employee number,并从另一个表中获取name

为了获得表s上的名称,表s和表sw上的slsrep列之间需要匹配

问题是我只想返回第一个表(p)中的行。第一个表中只有700条记录,但却有900条

基本上,我只想查看表p中的每一行,并匹配表s中的名称

这就是我目前拥有的:

SELECT p.LastName,
       p.FirstName,
       p.EmpNo,
       s.Name
FROM   PDDA..PhoneDirectory p
       LEFT OUTER JOIN nxtsql..swsmsn sw
            ON  p.EmpNo = sw.EmpNo
       JOIN NxtSQL..SMSN s
            ON  sw.slsrep = s.slsrep
WHERE  sw.statustype = 1
ORDER BY
       p.LastName

有很多方法可以做到这一点。一种是使用子选择来获取s.Name:

SELECT p.LastName, p.FirstName, p.EmpNo, (
  SELECT TOP 1 s.Name 
  FROM NxtSQL..SMSN s 
  INNER JOIN nxtsql..swsmsn sw 
    ON sw.slsrep = s.slsrep
  WHERE p.EmpNo = sw.EmpNo
  AND sw.statustype = 1
) AS Name
FROM PDDA..PhoneDirectory p
ORDER By p.LastName

左侧外部联接
应仅为
联接