从4个表中选择列

时间:2013-01-06 02:37:27

标签: select sql-server-2012 multiple-columns

首先,我对SQL全新,看过一些教程,vidoes,尝试搜索但没找到我需要的东西。我知道它之前曾问过,但我找不到它。

我需要找到的基本上就像

选择Company.Name,Programmer.Name,Manager.Name,CEO.Name

其中Company.City = Programmer.City = Manager.City = CEO.City

喜欢选择所有来自伦敦的人。

编辑:尝试仅使用2个表执行此操作,代码如下,但我收到错误

无法绑定多部分标识符“Company.Name”。

SELECT Company.Name
    FROM Company Cm
    INNER JOIN Programmer Pg
        ON Cm.City = Pg.City
    WHERE Cm.City = 'London'

1 个答案:

答案 0 :(得分:1)

尝试使用您指定的别名:

SELECT Cm.Name
    FROM Company as Cm
    INNER JOIN Programmer as Pg
        ON Cm.City = Pg.City
    WHERE Cm.City = 'London'

您可以扩展模式:

select Cm.Name, Cm.Address,
  Pg.Name, Pg.Address,
  Mgr.Name, Mgr.Address
  from Company as Cm inner join
    Programmer as Pg on Pg.City = Cm.City inner join
    Manager as Mgr on Mgr.City = Cm.City
  where Cm.City = 'London'

这将返回所有表都具有匹配数据的行,即City

如果您希望返回可能缺少某些数据的行,例如管理员但没有程序员,那么您将使用left outer join而不是inner join。使用outer join需要注意构造where子句以避免将连接从外部转换为内部。

select Cm.Name, Cm.Address,
  Pg.Name, Pg.Address,
  Mgr.Name, Mgr.Address
  from Company as Cm left outer join
    Programmer as Pg on Pg.City = Cm.City left outer join
    Manager as Mgr on Mgr.City = Cm.City
  where Cm.City = 'London'