2

我在按日期过滤我的 SOQL 查询时遇到了一些麻烦,其中日期字段属于我正在查询的对象的子项。

我在文档中找不到任何内容,我尝试了两个不同的查询,但都失败了:

SELECT Name, (SELECT Date__c FROM Child__r) 
FROM Parent Where Date__c >= <todays_date>

SELECT Name, (SELECT Date__c FROM Child__r) 
FROM Parent Where Child__r.Date__c >= <todays_date>

这在 Salesforce 中是否可行?

4

1 回答 1

10

您的问题并不完全清楚您要过滤的内容。但是,如果您想获取具有与某些标准匹配的日期的子记录的父母列表,那么您可以使用半联接,例如

select name from parent where 
      id in (select parentId from child where date__c > :today)

如果您还想要子数据,也可以添加子子查询,例如

select name, (select someChildFields from child__r) from parent where 
      id in (select parentId from child where date__c > :today)

这将使您成为拥有符合条件的孩子的父母,并为每个父母获得所有孩子。如果您只想要符合条件的子查询,您还可以根据相同条件过滤子查询,例如

select name, (select someChildFields from child__r where date__c > :today) 
      from parent where id in (select parentId from child where date__c > :today)

最后,根据您要执行的操作,您还可以翻转它并直接查询子表,从父记录中提取数据,例如

select childFields, parent__r.name from child where date__C > :today
于 2011-11-08T17:42:50.950 回答