2

同じオブジェクトから値を選択するという問題に直面しています。以下のクエリを提供しました。

Java J2EE アプリケーションを Salesforce に移行しています。以下のクエリはSQL.
で同じことをしようとしていますが、うまくいきSOQLません。

 SELECT DATA1__c, TEXT__c 
     FROM PARAMETERS__c 
     WHERE ( (TYPE__c = 'ADMINISTRATEUR') 
         AND (KEY1__c LIKE 'MONTAGE%') (AND KEY2__c = '')) 
         AND (DATA1__c 
                  IN (SELECT KEY1__c 
                      FROM Parameters__c 
                      WHERE TYPE__c = 'PERE_TECHNIQUE'))

上記のクエリでは、外側のクエリから一致する必要がある値を取得する必要がTYPEあります'TECHNIQUE' where KEY1__cDATA1__c

クエリはこの例と非常によく似ています

 SELECT Id 
     FROM Idea 
     WHERE ((Idea.Title LIKE 'Vacation%') 
         AND (CreatedDate > YESTERDAY)  
         AND (Id IN (SELECT ParentId 
                     FROM Vote 
                     WHERE CreatedById = '005x0000000sMgYAAU'))

唯一の違いは、IN句が別のオブジェクトで使用されることです。私のクエリではIN、同じオブジェクト パラメータの句を使用しようとしています。

ご不明な点がございましたら、お気軽にお問い合わせください。

4

2 に答える 2

1

以下を試してください

List<String> pereTechniqueParams = new List<String>();
for (String key: 
          [SELECT KEY1__c FROM Parameters__c WHERE TYPE__c = 'PERE_TECHNIQUE']) {
    pereTechniqueParams.add(key.KEY1__c);
}

List<Parameters__c> params = [SELECT DATA1__c, TEXT__c 
                                  FROM PARAMETERS__c 
                                  WHERE (TYPE__c = 'ADMINISTRATEUR' 
                                         AND KEY1__c LIKE 'MONTAGE%' 
                                         AND KEY2__c = '') 
                                      AND DATA1__c IN:pereTechniqueParams];

アップデート:

for (Parameters__c key1 : [SELECT KEY1__c 
                    FROM Parameters__c WHERE TYPE__c = 'PERE_TECHNIQUE']) {
    pereTechniqueParams.add(key1.KEY1__c);
} 

String を使用しないでください Parameters__c を使用します

public class LookUpController {
    public List<Parameters__c> getParamters() {
        List<String> pereTechniqueParams = new List<String>();
        for (Parameters__c key1 : [SELECT KEY1__c 
                            FROM Parameters__c WHERE TYPE__c = 'PERE_TECHNIQUE']) {
            pereTechniqueParams.add(key1.KEY1__c);
        } 
        List<Parameters__c> params = [SELECT DATA1__c, TEXT__c 
                               FROM PARAMETERS__c 
                               WHERE TYPE__c = 'ADMINISTRATEUR' 
                                   AND KEY1__c LIKE 'MONTAGE%' 
                                   AND KEY2__c = '' 
                                   AND Data1__c IN: pereTechniqueParams];
        return params;
    }
}
于 2013-07-28T11:59:17.307 に答える