我有这个抛出的查询。
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
谢谢!
答案 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';