function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Monin SavantMonin Savant 

Remove soql query from loop

I need to take the request out of the loop to avoid limits. Where Opportunity__c field in Depositor__c its has master-detail relationships with Opportunity.
Depositor__c[] depositors = trigger.new;
for (Depositor__c item : depositors) {
            List<AggregateResult> resultAmount = [SELECT SUM(Amount__c)sum 
                            FROM Depositor__c
                            WHERE Opportunity__c=:item.Opportunity__c];

Thanks in advance!
Sai PraveenSai Praveen (Salesforce Developers) 
Hi Monin,

Can you please check if this works for you.
 
Set<id> opportunityid= new set<id>();
for (Depositor__c item : depositors) {
    opportunityid.add(item.Opportunity__c)
}
List<AggregateResult> resultAmount = [SELECT SUM(Amount__c)sum 
                            FROM Depositor__c
                            WHERE Opportunity__c=:opportunityid];

If this solution helps, please mark it as best answer.

Thanks,
​​​​​​​
ravi soniravi soni
Hi Monin Savant, 
It's prety easy. you need to copy & paste below code.
Set<string> oppIdSet= new set<string>();
for (Depositor__c item : depositors) {
    oppIdSet.add(item.Opportunity__c)
}
List<AggregateResult> resultAmount = [SELECT SUM(Amount__c)sum 
                            FROM Depositor__c
                            WHERE Opportunity__c In :oppIdSet];

system.debug('@Developer resultAmount  size() ===> ' + resultAmount .size());

don't forget to mark it as best answer.
thank you