Где пункт в подзапросе Salesforce - PullRequest
2 голосов
/ 08 ноября 2011

У меня возникают проблемы с фильтрацией моего запроса 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 Ответ

9 голосов
/ 08 ноября 2011

Не совсем ясно из вашего вопроса, что именно вы пытаетесь отфильтровать.Но если вы хотите получить список родителей, у которых есть дочерняя запись с датой, соответствующей некоторому критерию, то вы можете использовать полусоединение, например,

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
...