如何在Oracle CRM On Demand中跨父对象字段和子对象字段构建查询?

如何在Oracle CRM On Demand中跨父对象字段和子对象字段构建查询?,oracle,crm,ondemand,Oracle,Crm,Ondemand,作为集成需求的一部分,我需要查询在特定日期和时间之后修改的Opportunity记录 现在,Opportunity有一个名为ProductRevenue的子对象,它具有一对多关系。我是否可以构造一个querypage来获取其Opportunity字段或其子ProductRevenue字段在特定日期和时间后已被修改的记录 我尝试使用SearchSpec参数,但它不允许我跨子对象字段进行查询 例如: ObjOpptyQueryPageInput.ListOfOpportunity.Opportun

作为集成需求的一部分,我需要查询在特定日期和时间之后修改的Opportunity记录

现在,Opportunity有一个名为ProductRevenue的子对象,它具有一对多关系。我是否可以构造一个querypage来获取其Opportunity字段或其子ProductRevenue字段在特定日期和时间后已被修改的记录

我尝试使用SearchSpec参数,但它不允许我跨子对象字段进行查询

例如:


ObjOpptyQueryPageInput.ListOfOpportunity.Opportunity.searchspec=“([ModifiedDate]>'01/01/2013 00:00:00')或([ProductRevenueData.ModifiedDate]>='01/01/2013 00:00:00')

[上面用C#编写的代码告诉我一个错误,即对象Opportunity没有名为-ProductRevenueData.ModifiedState的集成组件。]


任何帮助都将不胜感激。谢谢。

根据我的经验,您将无法使用他们的V2.0 api(即searchspec)执行此操作。您可以使用V1.0 api执行此操作,但这将返回与您的条件匹配的所有父记录以及所有相关ProductRevenue记录,无论它们是否满足条件。我做了类似的事情,然后根据xpath谓词过滤器对数据进行后处理。我认为,唯一的其他选择是两个独立的查询。

我自己一直在寻找答案,这是我的理解,尽管不是解决方案

在Web Services 2.0中,Oracle表示“所有符合父条件的父记录都会返回,只有符合子条件的子记录才会返回。”

实际上,您可以在父级和子级上定义“searchspec”,它的工作方式与Oracle定义的相同。然而,这可能不是你想要的行为。执行此操作时,会得到与parent.searchspec匹配的所有父级,而不管其子级是否与child.searchspec匹配。但是,这些家长在查询结果中将只具有与您的child.searchspec匹配的子(ren)。所以,如果你想要的只是“有这些孩子的父母”或“这些孩子”,那你就不走运了。因为你得到的是“许多父母和他们的一些孩子。”

因此,即使在对两个查询进行后处理时,您也必须花费一些时间:(

顺便说一下,您的两个独立查询必须如下所示:

问题1。
ObjOpptyQueryPageInput.ListOfOpportunity.Opportunity.searchspec=“([ModifiedDate]>'01/01/2013 00:00:00')”;

查询2.
ObjOpptyQueryPageInput.ListOfOpportunity.Opportunity.ListOfProductRevenue.ProductRevenue.searchspec=“([ModifiedDate]>='01/01/2013 00:00:00');

然后对查询2进行后期处理,以取出所有没有孩子的家长。
然后将其与查询1的结果合并。

我也遇到了同样的问题,我尝试了许多方法来解决这个问题,但现在您应该处理返回的结果:您可以使用
DOM
XPath
正则表达式
来提取返回结果所需的信息

在我的例子中,我使用XPath是因为它非常快速和简单。这是一个链接,指向我发布的问题,并给出了正确的答案:

我希望这能解决问题