Salesforce子查询上的Where子句

时间:2011-11-08 17:14:07

标签: salesforce soql

我在按日期过滤我的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中是否可行?

1 个答案:

答案 0 :(得分:9)

您的问题并不完全清楚您尝试过滤的内容。但是如果你想获得一个父母列表,这些父母的子记录的日期与某个critera匹配,那么你可以使用半连接,例如。

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