Salesforce 如何在Salesfoce中进行左内联接

Salesforce 如何在Salesfoce中进行左内联接,salesforce,left-join,soql,Salesforce,Left Join,Soql,salesforce架构中有两个表 +--------------+ +-------------+ | Case | | User | |--------------| |-------------| | CaseNumber | |id | | Con

salesforce架构中有两个表

               +--------------+      +-------------+
               |   Case       |      |   User      |
               |--------------|      |-------------|
               | CaseNumber   |      |id           |
               | ContactId    |      |OwnerId      |
               | IsClosed     |      |UserName     |
               +--------------+      +-------------+
ContactId是一个映射到OwnerId的外键。注意两个表中的foo是如何存在的

  +-------------------------------------+        +----------------------------+
  |                     Case            |        |             User           |
  |-------------------------------------|        |----------------------------|
  |CaseNumber |  ContactId |  IsClosed  |        | id | OwnerId | UserName    |
  |                                     |        |                            |
  |1             foo          false     |        | 42   foo       bob         |
  |2             bar          true      |        | 99   bar       joe         |
  |3             foobar       false     |        | 10   foobar    sally       |
  |                                     |        |                            |
  +-------------------------------------+        +----------------------------+
我想展示案例和用户之间的关系。鲍勃得了第一例,乔得了第二例。。我相信这就是所谓的一个。如果我错了,请纠正我

+-------------------------------------+
|                                     |
|  Case.CaseNumber | User.UserName    |
|                                     |
|     1               bob             |
|     2               joe             |
|     3               sally           |
|                                     |
+-------------------------------------+
以下是我认为SOQL查询的外观

我正在遵循Salesfoce SOQL文档中的示例


查询CaseNumber和UserName的正确语法是什么

我不确定我是否遵循了您的模式。然而,这个SOQL应该能满足您的需要

SELECT CaseNumber, Owner.Name FROM Case
这里有一个更通用的链接,可以帮助编写这样的查询

每个联系人的案例:

List<Contact> contacts = [SELECT Id, LastName, (SELECT ID FROM Cases) FROM Contact];
System.debug(contacts[0].Cases);       //list of cases for first contact
if(contacts[0].Cases.isEmpty() == false)
{
      System.debug(contacts[0].Cases[0].CaseNumber);  //case number of first case of first contact
}
每个用户的案例数:

List<User> users = [SELECT Id, LastName, (SELECT ID FROM Cases) FROM User];
System.debug(users[0].Cases);    //list of cases for the first user
if(users[0].Cases.isEmpty() == false)
{
     System.debug(users[0].Cases[0].CaseNumber);  //case number of first case for first user
}
其他查询: 只有已打开外壳的触点

List<Contact> contacts = [SELECT Id, LastName, (SELECT ID FROM Cases WHERE CloseDate = null) FROM Contact WHERE Id IN (SELECT ContactId FROM Cases WHERE CloseDate = null)];

我希望这对你有帮助

我看到他们都准备好帮助你了,但我还是想补充一些

您可以始终使用:workbench站点

或force.com来测试您的查询

List<Contact> contacts = [SELECT Id, LastName, (SELECT ID FROM Cases WHERE CloseDate = null) FROM Contact WHERE Id IN (SELECT ContactId FROM Cases WHERE CloseDate = null)];