2011-11-08 149 views
1

我遇到了一些问题,即按日期筛选我的SOQL查询,其中日期字段属于我查询的对象的子项。Salesforce子查询中的Where子句

我找不到文档中任何事情,我尝试了两种不同的查询,这两者的失败:

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这甚至可能吗?

回答

8

它不完全清楚你的问题到底你想要过滤什么。但是,如果你想得到一个父母的名单,其中有一个与一些标准日期匹配的儿童记录,那么你可以使用一个半连接,例如,

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 
+0

谢谢!第二个查询是我正在寻找的。我基本上想要根据日期范围(日期字段在子对象中)显示父对象的列表。 – Scott