2010-08-09 90 views
1

我想使用此查詢寫一些頂點代碼,而不是在任何地方得到幾個層次:SOQL查詢遍歷的任務

List<Task> tasks = [SELECT id, whatid, who.account.parent.name FROM task WHERE who.account.parent.name LIKE 'Procter%']; 

我並不感到驚訝,這並不工作,但不能似乎可以在任何地方找到解釋我將如何解決這個問題的文檔。有人有什麼主意嗎?我試圖讓所有的任務鏈接到一個聯繫鏈接到一個父母帳戶「寶潔」的帳戶...

回答

4

看起來像在混合領域的「去」的選項查找去多個對象,如WhatId去帳戶或機會)是非常有限的。我能寫「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%')] 
1

WhatId和WhoID是多態的網絡連接因此這些字段不支持遍歷多個級別。

0

我對分層遍歷有類似的要求,在我的情況下,我不得不選擇與任務關聯的潛在客戶信息。我所要做的是首先查詢任務列表,然後查詢基於這些任務的潛在客戶列表,然後使用包裝類將兩個列表組合到自定義對象中,並相應地使用Visualforce顯示對象。包裝類當然是我對公式的回答,因爲它似乎實際上無法直接使用Who.Id查詢。

希望這會有所幫助!

0

任務上的AccountID字段由SF爲聯繫人自動填充。顯然,對於潛在客戶來說這是空白的。所以,如果你想獲得帳戶數據你可以做這樣的事情:

SELECT ID,Who.FirstName,Who.LastName,Account.Parent.Name從任務WHERE WhoID = '00Q12SDFUUALDLKJF'

顯然,Leads.Parent.Name對於Leads是空白的。