Почему я получаю, что не удалось найти состоящий из нескольких частей идентификатор?

#sql-server #tsql

#sql-server #tsql

Вопрос:

Я создаю хранимую процедуру и ни за что на свете не могу понять, что с ней не так. Мне нужен другой взгляд на это, и никто здесь не может мне помочь. Вот мой код:

 SELECT AP.[TermID]
  ,TE.TermName
  ,AP.[SchoolID]
  , SchoolCode, SchoolName
  ,CASE WHEN [SA_Level] = 'A' THEN 'Adult' ELSE 'Secondary' END AS StudentType
  ,DE.[DOECode]
  ,DE.[DOEName]
  ,[LabMarWage]

FROM [inters].[inters_tblApprovedProgramsTest] AP


JOIN #SchoolList SL

JOIN[inters].[inters_tblDOECode] DE
ON AP.[SchoolID] = SL.[SchoolID]
-- JOIN [inters].[inters_tblJobCode] JC 
ON AP.[CipCode] = DE.[DOECode]
LEFT JOIN [inters].[inters_tblLabMarWage] LM
ON DE.[LabMarWageID] = LM.[LabMarWageID]
JOIN [inters].[inters_tblTerm] TE
ON AP.[TermID] = TE.[TermID]
WHERE [IsActive] = 1
AND TE.TermName = @TermName
AND [SA_Level] = 'S'
AND ( @CipFilter = 0
OR ( @CipFilter = 1 AND DE.[LabMarWageID] IS NOT NULL))

ORDER BY TermName
  ,SchoolName
  ,[SA_Level]
  ,[DOECode]
  ,[CreditHours]
  

Сообщение об ошибке:

(затронуты 11 строк) Сообщение 4104, уровень 16, состояние 1, Процедура JeffApprovedPrograms, строка 26 Не удалось привязать идентификатор, состоящий из нескольких частей «AP.SchoolID».

По какой-то причине я не вижу проблемы. Я был бы признателен за любую помощь, которую я мог бы получить.

Комментарии:

1. Почему в вашей JOIN таблице нет #Schoolist условия? У вас также есть пара синтаксических ошибок, таких как несколько ON операторов для одного JOIN

2. @JNK — Существует условие объединения ON AP.[SchoolID] = SL.[SchoolID] , но оно находится не в том месте, которое вызывает это сообщение об ошибке.

3. Я не уверен, почему они закодировали его так, как сделали, и я пытаюсь это очистить.

Ответ №1:

 JOIN #SchoolList SL

JOIN[inters].[inters_tblDOECode] DE
ON AP.[SchoolID] = SL.[SchoolID]
-- JOIN [inters].[inters_tblJobCode] JC 
ON AP.[CipCode] = DE.[DOECode]
  

Должно быть

 JOIN #SchoolList SL
    ON AP.[SchoolID] = SL.[SchoolID]    
JOIN [inters].[inters_tblDOECode] DE
    ON AP.[CipCode] = DE.[DOECode]
  

Комментарии:

1. На самом деле это было: НА DE.[CipCode] = DE.[DOECode]…. Я сравнивал яблоки с апельсинами 🙂