1

このクエリを使用していくつかのapexコードを記述しようとしていますが、どこにも到達していません。

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

これが機能しないのは驚きではありませんが、これをどのように行うかを説明するドキュメントがどこにも見つからないようです。誰かが何か考えを持っていますか?「プロクター・アンド・ギャンブル」の親アカウントを持つアカウントにリンクされた連絡先にリンクされたすべてのタスクを取得しようとしています...

4

4 に答える 4

4

混合フィールド (取引先や商談に移動する WhatId などの複数のオブジェクトにルックアップが移動するフィールド) で「上に移動」するオプションは非常に限られているようです。「WHERE what.name LIKE 'Procter%'」と書くことはできましたが、「WHERE what.parent.name LIKE 'Procter%'」と書くことはできませんでした。

ところで、WhoId ではなく WhatId である必要があると思います (タスクの入力規則エディターを確認し、フィールド「連絡先/リード ID」および「商談/アカウント ID」を挿入してみてください)。また、これらのフィールドでは「上に移動」(またはこのエディターの場合は「右に移動」) できないこともわかりますが、他のフィールドについては、「CreatedBy.UserRole.Name」のように関係を調べることができます。

代わりにこのサブクエリを試すことができますか?

[SELECT id, whatid FROM task WHERE whatid IN (SELECT Id FROM Account WHERE Parent.Name LIKE 'United%')]
于 2010-08-10T06:55:21.580 に答える
1

WhatId と WhoID は多態的な項目であるため、これらの項目は複数レベルのトラバースをサポートしていません。

于 2010-09-10T18:35:02.673 に答える
0

Tasks の AccountID フィールドは、連絡先に対して SF によって自動的に入力されます。明らかに、リードの場合は空白です。したがって、アカウント データを取得する場合は、次のようにするだけです。

SELECT ID、Who.FirstName、Who.LastName、Account.Parent.Name FROM タスク WHERE WhoID = '00Q12SDFUUALDLKJF'

明らかに、リードの Account.Parent.Name は空白です。

于 2013-02-03T21:55:51.757 に答える
0

階層トラバースについても同様の要件がありました。私の場合、タスクに関連付けられたリード情報を選択する必要がありました。私がしなければならなかったのは、最初にタスクのリストをクエリし、次にそれらのタスクに基づいてリードのリストをクエリし、ラッパー クラスを使用して 2 つのリストをカスタム オブジェクトに結合し、それに応じて Visualforce を使用してオブジェクトを表示することでした。ラッパー クラスは、実際には Who.Id を使用して直接クエリを実行できないように思われるため、方程式に対する私の答えでした。

お役に立てれば!

于 2012-07-03T18:54:27.873 に答える