首页 > 代码库 > 014_SOQL 和 SOSL

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