Регистрация  |  Вход

Квери которое вытягивает записи у которых есть файлы

думал, что это вот так просто

select ID from MyObject__c WHERE Id IN (SELECT ParentId FROM ContentDocument)

но СФ не дает создавать такие subquery

если есть идеи, то сначала попробуйте это в консоли, убедитесь что СФ дает выполниться квери :)
думал, что это вот так просто

[code]select ID from MyObject__c WHERE Id IN (SELECT ParentId FROM ContentDocument)[/code]

но СФ не дает создавать такие subquery

если есть идеи, то сначала попробуйте это в консоли, убедитесь что СФ дает выполниться квери :)
А почему делается фильтр по полю ParentId FROM ContentDocument, а не по полю EntityLinkedId FROM ContentDocumentLink ? Мы же шарим документ с помощью ContentDocumentLink. Одним запросом не получится а двумя вполне. Поправьте меня.

List<ContentDocumentLink> contentDocumentLinks = [SELECT LinkedEntityId FROM ContentDocumentLink WHERE LinkedEntityId IN (SELECT Id FROM Account)];

Set<Id> accountIds = new Set<Id>();
for (ContentDocumentLink link : contentDocumentLinks) {
accountIds.add(link.LinkedEntityId);
}

List<Account> accounts = [SELECT Id, Name FROM Account WHERE Id IN :accountIds];
А почему делается фильтр по полю ParentId FROM ContentDocument, а не по полю EntityLinkedId FROM ContentDocumentLink ? Мы же шарим документ с помощью ContentDocumentLink. Одним запросом не получится а двумя вполне. Поправьте меня.

List<ContentDocumentLink> contentDocumentLinks = [SELECT LinkedEntityId FROM ContentDocumentLink WHERE LinkedEntityId IN (SELECT Id FROM Account)];

Set<Id> accountIds = new Set<Id>();
for (ContentDocumentLink link : contentDocumentLinks) {
    accountIds.add(link.LinkedEntityId);
}

List<Account> accounts = [SELECT Id, Name FROM Account WHERE Id IN :accountIds];
все правильно, нужно использовать ContentDocumentLink

хотя если посмотреть на эту схему:

https://developer.salesforce.com/docs/at ... tent.htm

где там этот ContentDocumentLink? а он есть...

но все равно вот так не получается:

select ID from MyObject__c WHERE Id IN(SELECT LinkedEntityId FROM ContentDocumentLink)

Entity 'ContentDocumentLink' is not supported for semi join inner selects

а код выше - он рабочий (обратите внимание что ContentDocumentLink такой капризный что требует хоть как-то отфильтроваться в квери), но задача была создать именно квери
все правильно, нужно использовать ContentDocumentLink

хотя если посмотреть на эту схему:

https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_erd_content.htm

где там этот ContentDocumentLink? а он есть...

но все равно вот так не получается:

[code]select ID from MyObject__c WHERE Id IN(SELECT LinkedEntityId FROM ContentDocumentLink)

Entity 'ContentDocumentLink' is not supported for semi join inner selects[/code]

а код выше - он рабочий (обратите внимание что ContentDocumentLink такой капризный что требует хоть как-то отфильтроваться в квери), но задача была создать именно квери