0

首先,我对 SQL 完全陌生,看过一些教程、视频,尝试搜索但没有找到我需要的东西。我知道它以前问过,但我找不到。

我需要找到的基本上是这样的

选择 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'
4

1 回答 1

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'
于 2013-01-06T02:41:47.930 回答