The optional WITH DATA
CATEGORY clause is used in a SELECT statement to filter records based on their classification in one
or more data category groups. If WITH
DATA CATEGORY is specified, the query() only returns 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.
A SOQL statement using a WITH DATA CATEGORY clause must also include a FROM ObjectTypeName clause where ObjectTypeName equals:
an article type API Name to
query a specific article type
Question to 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 articles
WHERE PublishStatus='archived' for archived articles
WHERE PublishStatus='draft' for draft articles
Id to query an article based on its id
For information on article types or questions, see “Managing Article Types” and “Finding and Viewing Questions” in the Salesforce online
help.
filteringExpression
The filteringExpression in the WITH DATA CATEGORY clause uses the following syntax:
The category filtering in the statements
below is highlighted in bold. The syntax is explained in the following
sections.
SELECT Title FROM KnowledgeArticleVersion
WHERE PublishStatus='online' WITH DATA CATEGORY Geography__c ABOVE
usa__c
SELECT Title FROM Question WHERE LastReplyDate
> 2005-10-08T01:02:03Z WITH DATA CATEGORY Geography__c AT (usa__c,
uk__c)
SELECT UrlName FROM KnowledgeArticleVersion
WHERE PublishStatus='draft' WITH DATA CATEGORY Geography__c AT
usa__c AND Product__c ABOVE_OR_BELOW mobile_phones__c
You can only use the AND logical operator. The following syntax is incorrect as OR is not supported:
WITH DATA CATEGORY Geography__c ABOVE usa__c OR Product__c AT mobile_phones__c