我正在尝试使用此查询编写一些顶点代码,但无处可去:
List<Task> tasks = [SELECT id, whatid, who.account.parent.name FROM task WHERE who.account.parent.name LIKE 'Procter%'];
我并不感到惊讶这不起作用,但似乎无法在任何地方找到解释我将如何处理的文档。有人有什么主意吗?我正在尝试将所有任务链接到一个联系人,该联系人链接到一个具有“宝洁”父帐户的帐户......
我正在尝试使用此查询编写一些顶点代码,但无处可去:
List<Task> tasks = [SELECT id, whatid, who.account.parent.name FROM task WHERE who.account.parent.name LIKE 'Procter%'];
我并不感到惊讶这不起作用,但似乎无法在任何地方找到解释我将如何处理的文档。有人有什么主意吗?我正在尝试将所有任务链接到一个联系人,该联系人链接到一个具有“宝洁”父帐户的帐户......
看起来在混合字段中“向上”的选项(查找转到多个对象的选项,例如 WhatId 转到 Account 或 Opportunity)非常有限。我可以写“WHERE what.name LIKE 'Procter%' 但不能写“WHERE what.parent.name LIKE 'Procter%'”。
顺便说一句,我认为它应该是 WhatId 而不是 WhoId(查看任务的验证规则编辑器,尝试插入字段“联系人/潜在客户 ID”和“机会/帐户 ID”)。您还将看到您不能在这些字段上“向上”(或者在此编辑器的情况下 - “向右”),而对于其他一些字段,您可以探索诸如“CreatedBy.UserRole.Name”之类的关系。
你可以试试这个子查询吗?
[SELECT id, whatid FROM task WHERE whatid IN (SELECT Id FROM Account WHERE Parent.Name LIKE 'United%')]
WhatId 和 WhoID 是多态字段,因此这些字段不支持遍历多个级别。
我对分层遍历有类似的要求,在我的情况下,我必须选择与任务相关的线索信息。我要做的是首先查询任务列表,然后根据这些任务查询潜在客户列表,然后使用包装类将两个列表组合成自定义对象,并使用 visualforce 相应地显示对象。包装类当然是我对等式的回答,因为您实际上似乎无法直接使用 Who.Id 进行查询。
希望这可以帮助!
任务上的 AccountID 字段由 SF 自动为联系人填充。显然,Leads 是空白的。因此,如果您想获取帐户数据,您可以执行以下操作:
从任务中选择 ID、Who.FirstName、Who.LastName、Account.Parent.Name,其中 WhoID = '00Q12SDFUUALDLKJF'
显然,对于 Leads,Account.Parent.Name 是空白的。