SOQL - Написание вложенных запросов соединения - PullRequest
0 голосов
/ 27 августа 2018

Я хочу написать вложенный SQL-запрос на соединение в SOQL, но не могу получить его сразу после многих попыток. Может кто-нибудь помочь и объяснить, что я делаю не так? ТИА

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))

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

Есть ли возможность добавить в запрос "где" из OrderItems? Я спрашиваю о чем-то вроде SELECT Id, Name, Account.Name, (SELECT Id, OrderItemNumber, Product2.Name FROM OrderItems) FROM Order where Product2.Name ='xxxxxx'

0 голосов
/ 27 августа 2018

Что вы пытаетесь получить?Заказы с именем аккаунта, позициями заказа и названиями продуктов по этим позициям?Вы уверены, что хотите получить ответ в Salesforce SOQL?Поскольку синтаксис немного отличается от обычного SQL, например, здесь нет ключевого слова «JOIN» ... вам нужно будет много читать, может быть, сначала вы попробуете пройти курс по SOQL?

Если вы хотитеГлавный объект в запросе должен быть Order, затем перейдите вниз (к связанному списку позиций), затем снова вверх (от позиции к товару), тогда что-то вроде этого должно дать вам хорошую идею:

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

Не один JOIN, ON или даже WHERE, но результат аналогичен левому внешнему объединению в обычной базе данных.Соединение между заказом и счетом решается путем добавления точки (Account.Name), а соединение с соответствующим списком выполняется с помощью подзапроса

...