我试图将Pricebook2、Product2和PricebookEntry对象连接在一起,但不理解语法是如何工作的。
这3个对象之间的关系是Pricebook2与PricebookEntry的关系是一对多,而Product2与PricebookEntry的关系是一对多。我需要连接这3个表并过滤Product2中的Family字段和Pricebook2中的Name字段。
此查询用于将Pricebook2连接到PricebookEntry:
SELECT Name,(SELECT Name FROM PricebookEntries) FROM Pricebook2此查询用于将Product2连接到PricebookEntry:
SELECT Name,(SELECT Name FROM PricebookEntries) FROM Product2如何获取上面的SOQL并在1个查询中将3个表连接在一起?
谢谢
发布于 2019-01-16 07:30:04
正如您所指出的,产品和价格手册条目之间以及价格手册和价格手册条目之间存在一对多关系。从另一种角度来看,价格手册条目和产品之间存在多对一关系,价格手册条目和价格手册也是如此。在SQL界中,除了PriceBookEntry表中的外键字段(即Ids)之外,您还可以选择from PricebookEntry和INNER Product2和Pricebook2表,以获得额外的字段信息。如下所示:
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查询如下所示:
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 PricebookEntryhttps://stackoverflow.com/questions/40771324
复制相似问题