014_SOQL 和 SOSL

Posted BandariFang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了014_SOQL 和 SOSL相关的知识,希望对你有一定的参考价值。

1.SOQL: 和Sql 相似,但是更多的是限制,像Join 就不能够直接使用的,但在SOQL中融合了更多的对象(父子)间的关系,这个关系就能够代替join

 1)按照Lastname升序排,Null 在最前面

SELECT AccountId,Email,Id,LastName FROM Contact
  WHERE Email LIKE ‘%.net%‘ ORDER BY LastName ASC NULLS FIRST

 2)现在看两个例子,来具体分析下join在sql 和 soql 之间的使用方法

SQL:SELECT c.FirstName, c.LastName, a.Name FROM Account a
RIGHT JOIN Contact c ON (c.AccountId = a.Id)

  因为在soql中没有办法使用join,但可以明了的确定Account 和 Contact 之间的数据关系,即父子关系,是先有的Account,最后有Contact,每条contact都要指定一个Account。

SELECT FirstName, LastName, Account.Name FROM Contact

  特别提醒:这里的Account.Name 的Account 指的是 Account的API Name, 如果是自定的Object,就应该使用 Custome__r.Name

接收值的写法:

Account[] acctsWithContacts = [SELECT Name, (SELECT FirstName,LastName FROM Contacts)
                               FROM Account 
                               WHERE Name = ‘SFDC Computing‘];
// Get child records
Contact[] cts = acctsWithContacts[0].Contacts;
(类似于java的写法)System.debug(‘Name of first associated contact: ‘ + cts[0].FirstName + ‘, ‘ + cts[0].LastName);
 
Contact[] cts = [SELECT Account.Name FROM Contact WHERE FirstName = ‘Carol‘ AND LastName=‘Ruiz‘];

Contact carol = cts[0];

String acctName = carol.Account.Name;

System.debug(‘Carol\‘s account name is ‘ + acctName);

  

 

 

以上是关于014_SOQL 和 SOSL的主要内容,如果未能解决你的问题,请参考以下文章

SOQL查询不会检索所有联系人

一个查询SOQL中的父子关系和子父关系

合并两个 SOQL 查询

使用soql从销售人员获取选项列表记录

iframe 问题:Salesforce 未在 SOQL 嵌套查询中获取父级

014 Mui