Я путаю запрос SQL через соединение VBA ADODB. Пожалуйста, помогите выяснить, что мне не хватает в запросе ...
У меня есть две таблицы, TABLE_A и TABLE_B, и у них обеих есть столбцы ID и CODE, содержащие данные следующим образом:
A_ID contains data like, 'abcdefgh';
B_ID contains data like, 'ijabcdefgh';
A_CODE contains data like 'klmstuij' or 'kl-mstuij';
B_CODE contains data like 'klmstu'.
Тогда у меня есть запрос, подобный этому,
strSQL = "SELECT * " & _
"FROM TABLE_A a " & _
"LEFT JOIN TABLE_B b ON ((a.[A_ID]=RIGHT(b.[B_ID],8)) AND (LEFT(REPLACE(a.[A_CODE],'-',''),6)=b.[B_CODE]))"
И я получил ошибку при выполнении этого запроса, которая говорит:
Ошибка выполнения'-2147217887 (80040e21) ' , в Memo, OLE или объекте гиперссылки
((a. [A_ID] = RIGHT (b. [B_ID], 8)) И (ВЛЕВО (ЗАМЕНА (a. [A_CODE], '- ',' '), 6) = b. [B_CODE])) не может объединиться.
Я пробовал запрос с одним условием в LEFT JOIN, и он работает, запрос, как показано ниже:
strSQL = "SELECT * " & _
"FROM TABLE_A a " & _
"LEFT JOIN TABLE_B b ON (a.[A_ID]=RIGHT(b.[B_ID],8))"
Затем я попытался добавить еще одно условие в LEFT JOIN без строковой транзакции, и оно не удалось с той же ошибкой:
strSQL = "SELECT * " & _
"FROM TABLE_A a " & _
"LEFT JOIN TABLE_B b ON ((a.[A_ID]=RIGHT(b.[B_ID],8)) AND (a.[A_CODE]=b.[B_CODE]))"
Я что-то пропустил в запросе?