2014-09-29 68 views
1

當我試圖執行此查詢時,我得到「多部分標識符」#EachEmployee.ResultID「無法綁定。」錯誤。SQL錯誤無法綁定多部分標識符

DECLARE @QueryText VARCHAR(1000) 
SET @QueryText = ' 
UPDATE #EachEmployee2 
SET #EachEmployee2.CorrectAnswerCount = (
    SELECT COUNT (TMID) 
    FROM 
     ' + @WorkDatabaseName + '.dbo.TestBlockTM AS TBTM, 
     ' + @WorkDatabaseName + '.dbo.TestResultTM AS TRTM 
    WHERE 1 = 1 
      AND TBTM.TMID = TRTM.OtvetID 
      AND TBTM.TMPID = TRTM.VoprosID 
      AND TRTM.TestResultID = #EachEmployee2.ResultID 
    ) 
WHERE 
    #EachEmployee2.IsGroup = 0 AND #EachEmployee2.BlockID = 1' 
EXECUTE(@QueryText) 

然而,類似的查詢可以正常使用:

UPDATE #EachEmployee2 
SET #EachEmployee2.ResultID = (
SELECT TOP 1 TestResultID 
FROM #AnswersList AS a 
WHERE 1 = 1 
     AND a.SID = #EachEmployee2.SID 
     AND a.UserID = #EachEmployee2.UserID 
) 

誰能告訴這裏有什麼問題嗎?感謝並感謝您的幫助。

回答

1

試試這個

SET @QueryText = ' 
UPDATE emp 
SET emp.CorrectAnswerCount = (
    SELECT COUNT (TMID) 
    FROM 
     ' + @WorkDatabaseName + '.dbo.TestBlockTM AS TBTM, 
     ' + @WorkDatabaseName + '.dbo.TestResultTM AS TRTM 
    WHERE 1 = 1 
      AND TBTM.TMID = TRTM.OtvetID 
      AND TBTM.TMPID = TRTM.VoprosID 
      AND TRTM.TestResultID = emp.ResultID 
    ) 
    From #EachEmployee2 emp 
WHERE 
    emp.IsGroup = 0 AND emp.BlockID = 1' 
+1

這有幫助。說實話,我不知道你可以在「UPDATE..SET ..」表達式之後使用FROM。謝謝你的幫助。 – Yenn 2014-09-29 05:40:30

+1

歡迎大家每天都在學習新東西。 – 2014-09-29 05:49:04

0

你可以試試這個查詢,並告訴我,如果仍然出現錯誤:

SET @QueryText = ' 
UPDATE #EachEmployee2 
SET CorrectAnswerCount = (
    SELECT COUNT (TMID) 
    FROM 
     ' + @WorkDatabaseName + '.dbo.TestBlockTM AS TBTM, 
    INNER JOIN ' + @WorkDatabaseName + '.dbo.TestResultTM AS TRTM ON TRTM.OtvetID = TBTM.TMID 
                    AND TRTM.VoprosID = TBTM.TMPID 
                    AND TRTM.TestResultID = E.ResultID 
    ) 
FROM #EachEmployee2 E 
WHERE E.IsGroup = 0 
    AND E.BlockID = 1' 

我加入了FROM條款,以代替修改了一下子查詢舊的SQL語法由明確的INNER JOIN子句。

希望這會有幫助

相關問題