Многозначный идентификатор «genLedger.Ссылка на учетную запись» не может быть привязана. (4104) (SQLExecDirectW)

#python #sql #django #alias

Вопрос:

Я получаю приведенную ниже ошибку для приведенного ниже SQL-запроса, я почти уверен, что это как-то связано с псевдонимом, данным PostGl. Я просто не знаю, как это исправить.

Запрос:

 all =  'SELECT Master_Sub_Account , cAccountTypeDescription , Debit , Credit FROM [Kyle].[dbo].[PostGL] AS genLedger'
                    'Inner JOIN [Kyle].[dbo].[Accounts] '
                    'on Accounts.AccountLink = genLedger.AccountLink '
                    'Inner JOIN [Kyle].[dbo].[_etblGLAccountTypes] as AccountTypes '
                    'on Accounts.iAccountType = AccountTypes.idGLAccountType'
                    ' WHERE genLedger.AccountLink not in (161,162,163,164,165,166,167,168,122)'
 

Ошибка :

Многозначный идентификатор «genLedger.Ссылка на учетную запись» не может быть привязана. (4104)

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

1. Возможно: WHERE genLedger.AccountLink NOT IN (161, 162, ...) ?

2. Теперь он дает «многосоставный идентификатор «PostGL. Ссылка на учетную запись» не может быть привязана. (4104)» как ошибка при использовании этого кода

3. Для таблицы существует псевдоним PostGL . PostGL.AccountLink следует заменить на genLedger.AccountLink .

4. @ReinisVerbelis Я отредактировал приведенный выше вопрос. Ошибка для многосоставного идентификатора все еще отображается

5. Затем следующее: в конце первой строки нет места. Между genLedger и Inner JOIN [Kyle].[dbo].[Accounts]

Ответ №1:

в предложении where недопустимый синтаксис sql :

 WHERE genLedger.AccountLink <> 161 OR genLedger.AccountLink <> 162 OR...
 

но вы можете использовать not in вместо этого:

 WHERE genLedger.AccountLink not in (161,162,163,164,165,166,167,168,122)
 

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

1. Теперь он дает «многосоставный идентификатор «PostGL. Ссылка на учетную запись» не может быть привязана. (4104)» как ошибка при использовании этого кода

2. @KyleStranger вы дали PostGL таблице псевдоним «genLedger», и вы должны использовать этот псевдоним везде, где он установлен