2011-11-08 14 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

あなたの質問から完全にはっきりとフィルタリングしようとしていません。しかし、いくつかの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 
+0

ありがとうございました! 2番目のクエリは、私が探していたものでした。私は基本的に、日付の範囲(子オブジェクトにある日付フィールド)に基づいて親オブジェクトのリストを表示したかったのです。 – Scott