- 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 |