首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用soql连接3个Salesforce对象

问使用soql连接3个Salesforce对象
EN

Stack Overflow用户
提问于 2016-11-24 01:58:24
回答 1查看 1.9K关注 0票数 2

我试图将Pricebook2、Product2和PricebookEntry对象连接在一起,但不理解语法是如何工作的。

这3个对象之间的关系是Pricebook2与PricebookEntry的关系是一对多,而Product2与PricebookEntry的关系是一对多。我需要连接这3个表并过滤Product2中的Family字段和Pricebook2中的Name字段。

此查询用于将Pricebook2连接到PricebookEntry:

代码语言:javascript
复制
SELECT Name,(SELECT Name FROM PricebookEntries) FROM Pricebook2

此查询用于将Product2连接到PricebookEntry:

代码语言:javascript
复制
SELECT Name,(SELECT Name FROM PricebookEntries) FROM Product2

如何获取上面的SOQL并在1个查询中将3个表连接在一起?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2019-01-16 07:30:04

正如您所指出的,产品和价格手册条目之间以及价格手册和价格手册条目之间存在一对多关系。从另一种角度来看,价格手册条目和产品之间存在多对一关系,价格手册条目和价格手册也是如此。在SQL界中,除了PriceBookEntry表中的外键字段(即Ids)之外,您还可以选择from PricebookEntry和INNER Product2和Pricebook2表,以获得额外的字段信息。如下所示:

代码语言:javascript
复制
SELECT
  pbe.IsActive, pbe.UnitPrice, pbe.UseStandardPrice, 
  pbe.Pricebook2Id, pb.Name, pb.Description, pb.IsActive, pb.IsStandard, 
  pbe.Product2Id, p.Name, p.Description, p.Family, p.ProductCode, p.IsActive
FROM PricebookEntry pbe
INNER JOIN Pricebook2 pb ON pbe.Pricebook2Id = pb.Id
INNER JOIN Product2 p ON pbe.Product2Id = p.Id

很简单,对吧?使用相同的逻辑,您只需要将SQL语法转换为Salesforce SOQL方式,即使用“点符号”而不是内部连接。因此,等效的SOQL查询如下所示:

代码语言:javascript
复制
SELECT 
  IsActive, UnitPrice, UseStandardPrice, 
  Pricebook2Id, Pricebook2.Name, Pricebook2.Description, Pricebook2.IsActive, Pricebook2.IsStandard, 
  Product2Id, Product2.Name, Product2.Description, Product2.Family, Product2.ProductCode, Product2.IsActive
FROM PricebookEntry
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40771324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档