sql
  • sql-server
  • 2014-09-29 2 views 1 likes 
    1

    이 쿼리를 실행하려고하면 "The multi-part identifier"# 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 
    ) 
    

    사람은 문제가 여기에 무엇을 말할 수 있는가? 감사와 도움을 주셔서 감사합니다.

    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 절을 추가하고 대체하기 위해 비트를 서브 쿼리를 수정 :

    답변

    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

    +1

    매일 새로운 것을 배우는 것을 환영합니다. –

    0

    당신이이 쿼리를 시도하고 오류가 계속 발생하는지 말해 줄래 시도 이전의 SQL 구문을 명시 적으로 INNER JOIN 절로 대체하십시오.

    희망이 도움이 될 것입니다.

    관련 문제