WITH DATA CATEGORY
You can search for Salesforce Knowledge articles and questions by their data category in a SOQL query. WITH DATA CATEGORY is an optional clause in a SELECT statement that’s used to filter records that are associated with one or more data categories and are visible to users.
If WITH DATA CATEGORY is specified, the query() returns only matching records that are associated with the specified data categories and are visible to the user. If unspecified, the query() only returns the matching records that are visible to the user.
CategoryData is an object and DATA CATEGORY is syntax in a SOQL WITH clause. WITH DATA CATEGORY is valid syntax, but WITH CategoryData is not supported.
A SOQL statement using a WITH DATA CATEGORY clause must also include a FROM {ObjectTypeName} clause where ObjectTypeName equals:
KnowledgeArticleVersionto query all article types- an article type
API Nameto query a specific article type Questionto query questions
When ObjectTypeName equals to KnowledgeArticleVersion or any article type API Name in the FROM clause, a WHERE clause must be specified with one of the following parameters:
- PublishStatus to query articles depending on their status in the publishing cycle:
WHERE PublishStatus='online'for published articlesWHERE PublishStatus='archived'for archived articlesWHERE PublishStatus='draft'for draft articles
- Id to query an article based on its id
For information on article types or questions, see “Knowledge Article Types” in Salesforce Help.
The WITH DATA CATEGORY clause does not support bind variables. The clause can have no more than three data category conditions.
The filteringExpression in the WITH DATA CATEGORY clause uses the following syntax:
The examples in this section are based on the following data category group:
The category filtering in the statements is noted.
SELECT Title FROM KnowledgeArticleVersion WHERE PublishStatus='online' WITH DATA CATEGORY Geography__c ABOVE usa__c- Where the filter is
WITH DATA CATEGORY Geography__c ABOVE usa__c
- Where the filter is
SELECT Title FROM Question WHERE LastReplyDate > 2005-10-08T01:02:03Z WITH DATA CATEGORY Geography__c AT (usa__c, uk__c)- Where the filter is
WITH DATA CATEGORY Geography__c AT (usa__c, uk__c)
- Where the filter is
SELECT UrlName FROM KnowledgeArticleVersion WHERE PublishStatus='draft' WITH DATA CATEGORY Geography__c AT usa__c AND Product__c ABOVE_OR_BELOW mobile_phones__c- Where the filter is
WITH DATA CATEGORY Geography__c AT usa__c AND Product__c ABOVE_OR_BELOW mobile_phones__c
- Where the filter is
You can only use the AND logical operator. The following syntax is incorrect as OR is not supported: