SOQL - 编写嵌套连接查询

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SOQL - 编写嵌套连接查询相关的知识,希望对你有一定的参考价值。

我想在SOQL中编写一个嵌套的连接SQL查询,但经过多次尝试后无法正确使用它。有人可以帮帮忙解释我的错误吗? TIA

SQL查询:

SELECT O.ID, A.ID, A.AccountName, OP.Product2Name
FROM
[ORDER] O

JOIN
ACCOUNT A
    ON O.AccountID = A.ID

JOIN
    {
    SELECT P.ID, P.ProductName
        FROM
        ORDERITEM I
        JOIN
        PRODUCT2 P
        ON I.Product2ID = P.ID
    } AS OP
    ON OP.OrderID = O.OrderID

SOQL查询我正在尝试所有改进后:

SELECT ORDER.ID, ACCOUNT.ID, ACCOUNT.NAME, PRODUCT2.ID, PRODUCT2.NAME 
FROM ORDER, PRODUCT2, ACCOUNT, ORDERITEM
WHERE (ORDER.ID IN (SELECT ORDERID FROM ORDERITEM)) AND (PRODUCT2.ID IN 
(SELECT PRODUCT2ID FROM ORDERITEM)) AND (ACCOUNT.ID IN (SELECT ACCOUNTID IN ORDER))
答案

你想要检索什么?在这些订单项中使用帐户名称,订单行项目和产品名称的订单?您是否积极想要在Salesforce SOQL中回答?因为语法与普通SQL略有不同,例如没有“JOIN”关键字......你会有很多阅读要做的事情,也许先尝试一下SOQL的开端课程?

如果您希望查询中的主对象是一个订单,然后向下(到相关的订单项列表),然后再向上(从订单项到产品),那么这样的事情应该给你一个好主意:

SELECT Id, Name, Account.Name,
    (SELECT Id, OrderItemNumber, Product2.Name
    FROM OrderItems)
FROM Order

不是单一的JOINON甚至WHERE,但结果类似于普通数据库中的左外连接。订单和帐户之间的连接通过添加点(Account.Name)来解决,并且连接到相关列表是通过子查询完成的

另一答案

是否有可能在查询中添加OrderItems中的“where”?我问的是像SELECT Id, Name, Account.Name, (SELECT Id, OrderItemNumber, Product2.Name FROM OrderItems) FROM Order where Product2.Name ='xxxxxx'这样的东西

以上是关于SOQL - 编写嵌套连接查询的主要内容,如果未能解决你的问题,请参考以下文章

iframe 问题:Salesforce 未在 SOQL 嵌套查询中获取父级

APEX初步 [5] —— SOQL查询

一个查询SOQL中的父子关系和子父关系

如何使用 Laravel 查询构建器编写嵌套连接?

合并两个 SOQL 查询

1,SFDC 开发篇 - 类对象和SOQL查询