2015-12-21 1 views
0

J'ai 2 objets personnalisés dans Salesforce.comComment faire une requête imbriquée dans SOQL? Salesforce

L'un est PersonAccount et l'un est Comptes.

Dans le défaut objet « compte » J'ai un champ appelé user_id

PersonAccount agit comme une table de jonction pour relier le « compte » aux comptes

PersonAccount fait une recherche en personne pour user_id Recherche (compte)

Comment puis-je créer une requête pour vérifier quelque chose dans le compte pour trouver tous les éléments correspondants dans les comptes?

Répondre

0

Actuellement, Salesforce n'autorise qu'un seul niveau de requêtes imbriquées. Il canne se fait comme ce qui suit:

[SELECT ID, Name, Field1 from Object__c WHERE Id IN (SELECT Id FROM Object2__c WHERE Field2 = 'SomeValue')] 

Cependant, avec l'objet de jonction vous n'avez pas réellement besoin d'utiliser une requête imbriquée.

Malheureusement, votre description n'est pas assez claire pour comprendre la configuration spécifique de votre objet, donc je vais faire quelques suppositions.

Vous avez trois objets, Accounts__c (vos objets de comptes personnalisés), PersonAccount__c (votre objet de jonction) et Account (les objets de compte par défaut). L'objet PersonAccount__c contient deux champs de recherche (pour une vraie jonction, ils doivent être maître-détail). Le premier est à Accounts__c (nous l'appellerons lup_cust_accounts__c). La seconde est à Account (nous appellerons lup_account__c). [En aparté, c'est une très mauvaise idée d'avoir un objet Comptes et Compte. Cela va vous gâcher parce que Salesforce va automatiquement mettre les mots au pluriel, et vous ne saurez plus qui est qui.]

Salesforce permet les recherches de relations ponctuelles dans les requêtes SOQL. Donc, si vous voulez obtenir l'ID et le nom de la coutume Comptes objets lorsque le nom de l'objet de compte associé est comme « Test », vous pouvez effectuer les opérations suivantes:

[SELECT lup_cust_accounts__r.Id, lup_cust_accounts__r.Name FROM PersonAccount__c WHERE lup_account__r.Name LIKE 'Test%']; 

avis double underscore r au lieu de la double underscore c? C'est ainsi que vous indiquez une référence (recherche) plutôt que la valeur du champ spécifique.