+ Start a Discussion

Navigate relationships


My objects are:


CONTACT(lookup)-------------ACCOUNT (master)-------ACCOUNT PLAN(detail/master)--------INFLUENCER(detail)


I want create a lookup on INFLUENCER that shows only the contacts related.

With soql from the object INFLUECER how can i get the account and after the contact related?


I have written this:



Select Account.id,id,name from contact where Account.id IN (SELECT Account_Plan__r.Account__r.id FROM Influencer__c)



but i get an error :

The inner select field 'Account_Plan__r.Account__r.id' cannot have more than one level of relationships

 Any advice?


Thank you in Advatage.



If i got it correctly ,you want only those Contacts and Account IDs whose related Accounts have atleast 1 Influencer record .

That means if an Account has got no Influencer child record ,you dont wanna retrieve the Contacts for that Account .


Is it what you want ?


This is my solution:



Set<Id>ids=new set <Id>();



for(Influencer__c lacc :[SELECT Account_Plan__r.Account__r.id FROM Influencer__c]){




Contact[]lc=[SELECT Account.id from Contact where Account.id IN :ids];


Thank you!