0

タスクを取得するために soql クエリを使用しています。私の要件は、関連するアカウントまたは連絡先オブジェクトであるすべてのタスクを取得することです。また、オブジェクトが関連するアカウントまたは連絡先オブジェクト内の他のいくつかのフィールド。複数のクエリを書く代わりに簡単な方法はありますか?

4

3 に答える 3

1

あなたの質問は少し不明確です。アカウントまたは連絡先に関連するすべてのタスク、または特定のアカウントまたは連絡先に関連するすべてのタスクをお探しですか?

前者ならやってみる

    SELECT ID、件名、
    タスクから
    どこ
        What.Type = 'アカウント' OR
        Who.Type = '連絡先'

後者の場合は、IN :listMoti によって既に提案されている構文を使用してください。は、たとえば OPPORTUNITIES に関連付けられた TASKS を返さないため、 とはWhat.Type対照的に便利です(その動作が必要な場合は、 を使用します。AccountId!=nullAccountId!=nullWho.Type

いずれの場合も、多態的なフィールドは限られた数のフィールドへのアクセスのみを許可するため、問題は CONTACT whos から特定のデータを取得することになります。現在、そのリストが見つからないようです。古い SOQL が 1 つのクエリでそれを行うような構文をサポートしているとは思えません。それが、SOQL ポリモーフィズムがこれほど大きな成功を収めた理由です。ただし、私が間違っている可能性もあります。

ここで、SOQL TYPEOF を利用できる場合は、次のようなもっと興味深いことができるはずです。

    SELECT ID、件名、
    TYPEOF何
        WHEN アカウント THEN アカウント番号
    終わり、
    TYPEOF誰
        連絡先 連絡先 名
    終わり
    FROM タスク
    どこ
        What.Type = 'アカウント' OR
        Who.Type = '連絡先'
于 2013-11-06T20:09:42.627 に答える
0

どうですか

select {column list] from task where parentid in (select id from account where ...) または parentid in (select id from contact where ...)

または、Apex 内にいて、リストに取引先責任者または取引先 ID が既にある場合 (idList を使用します)、次を使用できます。

select {column list] from task where parentid in :idList

于 2013-11-06T04:02:16.647 に答える