Salesforce 在单个SOQL查询中包含附加条件

Salesforce 在单个SOQL查询中包含附加条件,salesforce,soql,Salesforce,Soql,我有一个SOQL构建,如下所示: 选择主题、IsChild、StartDateTime、Owner.UserName、Owner.Email、Notes\u Universal\u ID\u\c、位置、IsPrivate、IsDeleted、ID、EndDateTime、描述、ShowAs、, 选择Id、状态、响应、EventId、RelationId、Relation.Email FROM EventRelations 来自事件,其中主题='Test Meeting 3'和IsChild=fa

我有一个SOQL构建,如下所示:

选择主题、IsChild、StartDateTime、Owner.UserName、Owner.Email、Notes\u Universal\u ID\u\c、位置、IsPrivate、IsDeleted、ID、EndDateTime、描述、ShowAs、, 选择Id、状态、响应、EventId、RelationId、Relation.Email FROM EventRelations 来自事件,其中主题='Test Meeting 3'和IsChild=false

在同一个查询中,我正在寻找从用户对象为所有者和与会者执行附加检查Sync_contacts_和_cal_with_Notes_uc=true

有没有可能,有人能帮我查询一下


谢谢

这会变得有点棘手

基本思想很简单,只需添加两个WHERE子句。我跳过了您的大部分字段,因此更改更为明显:

SELECT Subject, Owner.UserName, Owner.Email,
    (SELECT Status, Response, RelationId, Relation.Email 
    FROM EventRelations
    WHERE Relation.Sync_contacts_and_cal_with_Notes__c = true)
FROM Event 
WHERE Subject = 'Test Meeting 3' AND IsChild = false
    AND Owner.Sync_contacts_and_cal_with_Notes__c = true
但是,这将在两个表上进行过滤

2个用户:Alice没有选中复选框,Bob选中了

如果你有一个由Alice主持的活动-即使Bob是其中一些活动的参与者之一,并且他希望看到这些活动,但她的所有活动都不会同步

一种方法是简单地将标志包含在SELECT中,然后手动筛选代码中的记录

另一个选项是反转关系,从EventAttendee开始向上查看,并使用OR筛选器:

SELECT Status, RelationId, RelationEmail, 
    Event.OwnerId, Event.Owner.Email
FROM EventAttendee
WHERE Owner.Sync_contacts_and_cal_with_Notes__c = true
    OR Event.Owner.Sync_contacts_and_cal_with_Notes__c = true
ORDER BY Event
这更好,但并不理想,因为现在我们将永远不会看到没有任何与会者的活动

编辑以回答评论:

您将看到EventAttenders或EventRelations,具体取决于您使用的API版本,我想我们已经在前面的问题中讨论过了?只需相应地替换表名和字段名

关于这个错误-真的很奇怪!它似乎乐于接受标准用户字段,但当您开始使用自定义字段时,它会变得愚蠢。解决这个问题的一种方法是联系SF支持人员并选择加入多态SOQL

另一种方法-您必须将其拆分为两个查询,首先选中复选框获取用户id,然后在WHERE OwnerId in:set of the This id's here中使用它们

或:

SELECT Subject, Owner.UserName, Owner.Email,
    (SELECT Status, Response, RelationId, Relation.Email 
    FROM EventRelations
    WHERE RelationId IN (SELECT Id FROM User WHERE Checkbox__c = true))
FROM Event 
WHERE IsChild = false
    AND OwnerId IN (SELECT Id FROM User WHERE Checkbox__c = true)
如果我没有记错,请设置ReccurenceActivityId。
EventAttendee表不存在,因此来自EventAttendee的..不工作。此外,由于某种原因,前面的查询给出了此错误无效的\u字段:AND Owner.Sync\u contacts\u和\u calu与\u Notes\u c^行:7:Column:9错误实体“Name”上没有此类列“Sync\u contacts\u和\u calu与\u Notes\u c”。如果试图使用自定义字段,请确保在自定义字段名称后附加“\uuu c”。请参考您的WSDL或descripe调用以获得适当的名称。另外,我正在抓取以了解父事件和子事件之间的关系。再次感谢您的帮助。查询将选择主题、所有者.用户名、所有者.电子邮件、选择状态、响应、关系ID、,Relation.Email FROM EventRelations WHERE RelationId IN SELECT Id FROM User WHERE Sync_contacts_和_cal_with_Notes_c=true FROM Event WHERE IsChild=false和OwnerId IN SELECT Id FROM User WHERE Sync_contacts_和_cal_with_Notes_c=true似乎正确,但在与force.ide冲突时它只是挂在那里。。。抱歉,我对Soql比较陌生。force.ide似乎有一些问题,在eclipse中运行良好。非常感谢您的帮助。对于SOQL原型的使用,Eclipse/Force.com IDE有点落后,即使语法完全有效,也不能很好地呈现结果。或者我是Real Force Explorer的忠实粉丝,因为它可以同时连接到多个环境,并且具有您运行过的SOQL历史: