2个数据库QF AND TK
QF有以下内容:
想象一下,您有一个名为FunctionalGroup的表,其中包含以下数据:
FunctionalGroupID | FunctionalGroup
1 Engineering
2 Purchasing
一张表是一组登录名,带有一个functionalgroupID来引用该人所在的群组......
LoginID | FunctionalGroupID | Login
1 1 Jon
2 1 Joe
3 2 Jane
所以Jon和Joe正在工程,而Jane正在购买......足够简单
现在还有另一个数据库TK。
TK有以下表格登录此效果:
Login | FunctionalGroupID
Jon Purchasing
Joe Purchasing
Jane Purchasing
请注意此数据库中的Jon和Joe现在是采购组的一部分......但请注意该字段是文本字段而不是ID。所以我想要做的是使用此表作为主数据源并更新QF表,以便QF中的登录表现在如下所示:
LoginID | FunctionalGroupID | Login
1 2 Jon
2 2 Joe
3 2 Jane
这是更新此表,通过设置其functionalgroupid = 2使Jon和Joe成为采购组的一部分。因为2表示购买。
我试过了:
UPDATE
Login
SET Login.FunctionalGroupID = FunctionalGroup.FunctionalGroupID
FROM Login INNER JOIN
TKKCommonData.dbo.Login lz
ON lz.Login = Login.Login
AND lz.FunctionalGroupID = FunctionalGroup.FunctionalGroup
但是我收到了一个错误:
Msg 4104, Level 16, State 1, Line 1
The multi-part identifier "FunctionalGroup.FunctionalGroup" could not be bound.
这看起来很简单,但我不知道如何编写更新语句。我只想通过Login(这是用户名)加入表,然后按功能组名称加入。
UPDATE
QuikFix.dbo.Login
SET QuikFix.dbo.Login.FunctionalGroupID = QuikFix.dbo.FunctionalGroup.FunctionalGroupID
FROM QuikFix.dbo.Login INNER JOIN
TKKCommonData.dbo.Login
ON TKKCommonData.dbo.Login.Login = QuikFix.dbo.Login.Login
AND TKKCommonData.dbo.Login.FunctionalGroupID = QuikFix.dbo.FunctionalGroup.FunctionalGroup
WHERE TKKCommonData.dbo.Login.LoginID= 101
答案 0 :(得分:1)
您需要额外的INNER JOIN
:
UPDATE Login
SET
Login.FunctionalGroupID = FunctionalGroup.FunctionalGroupID
FROM Login
INNER JOIN TKKCommonData.dbo.Login lz
ON lz.Login = Login.Login
INNER JOIN FunctionalGroup
ON lz.FunctionalGroupID = FunctionalGroup.FunctionalGroup
答案 1 :(得分:0)
为查询中的所有表而不是TKKCommonData.dbo.Login指定数据库名称,似乎无法在运行查询的数据库中找到FunctionalGroup表。