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