본문 바로가기

Salesforce

SOQL

  • SOQL이 APEX안에 있을 때 ‘인라인 SOQL’이라고 부른다.
  • SELECT 시 * 안됨. SELECT할 field 입력해야 함.
  • SOQL은 For Loop를 이용해서 일괄로 처리가 가능하다
    • for( variable : [soql_query]){ code_block }
    • for( variable_list : [soql_query]){ code_block }
  • parameter값을 SELECT 조회시 WHERE 절에 넣고 싶다면?????
    • SELECT Id FROM Account WHERE Name =: parameter

SOQL과 SOSL의 유사점과 차이점

  SOQL SOSL
유사점 둘 다 특정 정보를 검색한다.
차이점
검색개수 한번에 하나의 Object만 전체 검색가능
단어검색시 해당 단어를 포함한 모든 것들 해당 단어만 들어간 것
검색 단일 개체에 대한 레코드 검색 객체에서 필드 검색(대부분의 텍스트 필드 검색)

Quoted String Escape Sequences

Sequence Meaning
\n 줄바꿈
\r carraige return( 다음줄로 이동하지 않고 커서를 줄의 시작 부분으로 이동
\t
\b 벨(경고)
\f 폼피드
\'' 큰따옴표
\‘ 작은따옴표
\\ 역슬래시
LIKE expression only: \_ '_'
LIKE expression only:\% %

Escape Character Examples


SELECT Id FROM Account WHERE Name LIKE 'Ter%'
‘Ter’로 시작하는 Account의 모든 계정

SELECT Id FROM Account WHERE Name LIKE 'Ter\%'
‘Ter%’와 정확히 일치하는 Account의 모든 계정

SELECT Id FROM Account WHERE Name LIKE 'Ter\%%'
‘Ter%’로 시작하는 Account의 모든 계정


SOQL SubQuery

기존 쿼리에 서브쿼리를 추가해서 사용하는데 조회하는 필드가 양쪽 다 standartd Object일 경우 SubQuery의 FROM에 입력하는 Object에는 s를 붙여줌.

기존 쿼리나 서브 쿼리 둘 중 하나에서 조회하는 필드가 custom Object일 경우, 하위 오브젝트(서브 쿼리)의 FROM 에 입력하는 Object에 __r을 붙인다.

 

Child - to Parent Query

Account = parent / Contact = child
ex) SELECT FirstName, LastName, Account.Name FROM Contact

Parent - to Child Query

Account = parent / Contact = child
ex) SELECT Name ( SELECT FirstName, LastName FROM Contacts) FROM Account

 

__r (Custom relationship을 사용하는 경우) Custom Object인 경우

Child - to Parent Query

Service__c = parent / Service_Line__c= child
ex) SELECT Id, Service__c, Service__r.Name FROM Service_Line__c

 

Parent - to Child Query

Service__c = parent / Service_Line__c = child
ex) SELECT Id, Name, (SELECT Id, Name FROM Service_Lines__r) FROM Service__c

 

APEX에서 서브쿼리에 접근할 때

Service_Line__c line = [select ... from service_line__c where ...];
if (line.service__r.name == 'Master Service') {
    // Do something
}


Service__c service = [select ... from service__c where ...];
for(Service_Line__c line:service.Service_Lines__r) {
    // Do something
}


집계 함수 사용시

 

집계함수 : AVG(), COUNT(), MIN(), MAX(), SUM()

전체 카운트가 하고싶으면 SQL에서는 SELECT COUNT(*) FROM Account 였다면,
SOQL에서는 SELECT COUNT() FROM Account라고함.

집계 함수를 사용해 List를 뽑아낼거면 List<sObject>에서 sObject에 적는 건 Account가 아니라 AggregateResult를 사용한다.

'Salesforce' 카테고리의 다른 글

APEX TESTING  (0) 2021.09.30
APEX TRIGGER  (0) 2021.09.30
SOSL(Salesforce Object Search Language  (0) 2021.09.30
Automation Tool& Apex  (0) 2021.09.30
Data Relationship/Security  (0) 2021.09.30