047_SOQL 基本查询总结

 User currentUser = [SELECT Id, Profile.Name,UserRole.Name FROM User WHERE Id = :UserInfo.getUserId()];

在子记录中查询父记录

实例1:

  1. Project__c pro = [SELECT Id, Name, Account__r.Name, P_Status__c, P_Plan_Complete_Date__c, P_Actual_Complete_Date__c   
  2.                           FROM Project__c   
  3.                           WHERE P_Status__c='Finishing'   
  4.                                           LIMIT 1];  


其中Account为自定义的关系字段,Project为自定义的对象

实例2:

  1. Opportunity opp = [select Name, Account.Name from Opportunity limit 1];  


2、在父记录中查询相关的子记录

  1. Account acc = [select name, (select name from opportunities) from account limit 1];  
  2. system.debug('account name:' + acc.name);  
  3. List opp = acc.opportunities;  
  4. system.debug('number of opportunities:' + opp.size());  
  5. for (opportunity op : opp) {  
  6.     system.debug('opportunity name:' + op.name);  
  7. }  


3、从junction对象里,查询与之master-details关系的两个details记录

数据模型图如下:


查询需求:查询会议名称日期及与之相关的发言人姓名。

  1. SELECT Session__r.Name,  
  2.        Session__r.Session_Date__c,  
  3.        Speaker__r.First_Name__c,  
  4.        Speaker__r.Last_Name__c  
  5. FROM Session_Speaker__c  
  6. ORDER BY Session__r.Session_Date__c,  
  7.          Session__r.Name  

示例:

1-1 、下面查询返回与Closed Won的商机相关的Account的Id和Name:

  1. SELECT Id, Name FROM Account   
  2. WHERE Id IN   
  3.   ( SELECT AccountId  
  4.     FROM Opportunity  
  5.     WHERE StageName = 'Closed Won'   
  6.   )  

1-2、下面查询返回联系人来源于Web的商机Id

  1. SELECT Id FROM Opportunity  
  2. WHERE AccountId NOT IN   
  3.   (  
  4.     SELECT AccountId  
  5.     FROM Contact  
  6.     WHERE LeadSource = 'Web'  
  7.   )  

1-3、下面查询返回与Closed Won商机且与LeadSource为Web的联系人相关的Account的Id和Name

  1. SELECT Id, Name, Owner.UserName  FROM Account   
  2. WHERE Id IN (SELECT AccountId FROM Contact WHERE LeadSource = 'Web')   
  3.       AND Id IN (SELECT Accountid FROM Opportunity WHERE StageName = 'Prospecting')  

1-4、在查询语句中使用 [ORDER BY fieldOrderByList {ASC|DESC} [NULLS {FIRST|LAST}] ]
未使用Example:

  1. SELECT Tender_Project__r.Name, Bid_Amount__c, Is_Finalists_Competitive__c, Bid_Price_Fomula__c, Supplier_Bid_Price__c, Bidding_Ranking__c, CreatedDate   
  2. FROM Advertiser_Tender_Relationship__c   
  3. WHERE Tender_Project__c = 'a0L7F000000JyMk' <span style="color:#ff0000;">ORDER BY Bidding_Ranking__c ASC</span>  

效果预览:

使用后Example:

  1. SELECT Tender_Project__r.Name, Bid_Amount__c, Is_Finalists_Competitive__c, Bid_Price_Fomula__c, Supplier_Bid_Price__c, Bidding_Ranking__c, CreatedDate   
  2. FROM Advertiser_Tender_Relationship__c   
  3. WHERE Tender_Project__c = 'a0L7F000000JyMk' <span style="color:#ff0000;">ORDER BY Bidding_Ranking__c ASC NULLS LAST</span>  




此刻,静下心来学习
原文地址:https://www.cnblogs.com/bandariFang/p/7991636.html