找不到多部件标识符

时间:2015-06-29 13:08:35

标签: sql sql-server

我有这个抛出的查询。

SELECT 
    Firm._Name, Broker._name
FROM 
    Firm, Broker
INNER JOIN 
    Employer AS emp ON emp.firmid = Firm.firmid 
INNER JOIN 
    emp ON emp.brokerid = Broker.brokerid
WHERE 
    emp._name = 'xxx';
  

Msg 4104,Level 16,State 1,Line 4
  无法绑定多部分标识符“Firm.firmid”。

Firm表:

firmid
_Name

Broker表:

brokerid
firmid
_name

Employer

employerid
brokerid
firmid
_name

谢谢!

2 个答案:

答案 0 :(得分:1)

    SELECT Firm._Name, Broker._name
    FROM Firm
    INNER JOIN Employer emp
    ON emp.firmid = Firm.firmid 
    INNER JOIN BROKER 
    ON emp.brokerid = Broker.brokerid
    WHERE emp._name = 'xxx';

更正上述语法。

答案 1 :(得分:0)

您首先交叉加入公司和经纪人,即将每个公司记录与每个经纪人记录合并。这当然不是你想要的。不要使用逗号加入。始终使用显式连接。 (所以,如果你真的想加入这两个,你会说FROM Firm CROSS JOIN Broker)。

然后你加入Employer到Firm并称之为emp。您还将表emp加入Broker,但该表可能不存在。我想你的意思是使用刚刚创建的别名,但这是不可能的。你甚至不想加入另一条记录。您只想与公司和经纪人一起加入雇主。

所以:从Employer获取记录,然后加入Firm and Broker。 (至少这是我想你想要的。)

select f._name, b._name
from employer e
inner join firm f on f.firmid = e.firmid
inner join broker b on b.brokerid = e.brokerid
where e._name = 'xxx';