【问题标题】:How to Write SOQL for 2 custom objects which have same fields Level_1__c, Level_2__c,Level_3__c如何为具有相同字段 Level_1__c、Level_2__c、Level_3__c 的 2 个自定义对象编写 SOQL
【发布时间】:2020-11-08 03:32:05
【问题描述】:

我有一个名为 Case_Type_Data__c 的自定义对象,其中包含字段 Level_1__c、Level_2__c、Level_3__c 我有另一个名为 ERT_Case_Type__c 的自定义对象,具有相同的字段 Level_1__c, Level_2__c,Level_3__c

我将数据从 ERT_Case_Type__c 批量复制到 Case_Type_Data__c

当我尝试在工作台中编写 SOQL 以找出哪些记录没有被复制时,例如:

Select Level_1__c,Level_2__c,Level_3__c From Case_Type_Data__c Where Level_3__c NOT IN (Select Level_3__c From ERT_Case_Type__c)

Workbench 报错:

MALFORMED_QUERY: semi join sub selects can only query id fields, cannot use: 'Level_3__c'

请注意 ERT_Case_Type__c 的 Id 和 Case_Type_Data__c 的 Id 不匹配,因此我不能使用 Id。

我正在寻找一种方法来加入 SOQL 以获取未从 **ERT_Case_Type__c ** 复制到 Case_Type_Data__c

的记录

问候, 卡罗琳

【问题讨论】:

    标签: salesforce apex apex-code salesforce-lightning salesforce-communities


    【解决方案1】:

    您不能在 SOQL 中执行任意联接。如果 Level_3__c 不是 Id 字段,则无法跨这些对象执行连接,如错误消息所述。

    如果此字段是文本字段,您需要从 Salesforce 中提取数据并在本地对其进行分析,或者编写 Apex 代码分别对这两个对象执行查询并提取您需要的数据。鉴于您最初使用 Batch Apex 的说法,由于数据量大,后一种方法可能不可行。

    【讨论】:

      【解决方案2】:

      如果有人在寻找答案,这是select case__c, createddate, level_1__c, level_2__C, lEVEL_3__C from ert_case_type__c where createddate >= 2020-11-09T00:30:26.467-08:00 and case__c NOT IN (select case__C from case_type__C) order by createddate的查询

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-01-28
        • 2021-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多