1. 程式人生 > >“無法繫結由多個部分組成的識別符號 “解決方案

“無法繫結由多個部分組成的識別符號 “解決方案

select D.ID from UFIDA::U9::CBO::SCM::Customer::Customer as C inner join UFIDA::U9::Base::FlexField::ValueSet::DefineValue as D on
D.Code =C.Segment1 and D.ValueSetDef.Code='008'

上面的OQL看似沒什麼大問題,而且OQL引擎也可以將它翻譯過來:

select  A1.[ID] from  CBO_Customer as A  inner join Base_DefineValue as A1 on ((A1.[Code] = A.[Segment1]) and (A2.[Code] = '008'))  left join [Base_ValueSetDef] as A2 on (A1.[ValueSetDef] = A2.[ID])

但是在執行的時候卻報錯:Error is: 無法繫結由多個部分組成的識別符號 "A2.Code"。出現這個錯誤的原因是沒有理解透徹inner join … on… 的使用方式。其實on子句是設定兩個表連線的條件,D.ValueSetDef.Code='008' 並不是兩個表關聯的條件,而應該作為where條件。正確的寫法如下:

select D.ID from UFIDA::U9::CBO::SCM::Customer::Customer as C inner join UFIDA::U9::Base::FlexField::ValueSet::DefineValue as D on
D.Code =C.Segment1 where  D.ValueSetDef.Code='008'