Salesforce и SOQL: доступ к объекту внука от деда
Я пытаюсь получить доступ к объекту внука.
У меня есть 3 объекта,
Opportunity,
Quote,
QuoteLineItems,
Возможность - это родитель для цитирования, а цитата - это родитель для цитирования LineItems.
К сожалению, написание запроса для этого оказывается сложной задачей. Я использую Force.com Explorer, и нет прямой связи между Opportunity и QuoteLineItems. Вы можете использовать вложенные операторы Select только на один уровень.
Я ищу написать запрос, который будет захватывать все поля из этого объекта (я могу ввести поля вручную), но я не уверен, как работает логика соединения.
Выберите ID, (выберите ID из кавычек) из возможности.
Каким-то образом мне нужно присоединиться к Quotelineitems в этом запросе.
Какие-нибудь мысли?
2 ответа
Из документации API "В каждом указанном отношении в запросе может быть указан только один уровень отношения родитель-потомок".
Идя в другом направлении (от ребенка к родителю), вы можете пройти пять уровней. Итак, что-то вроде этого может работать для вас:
SELECT Id, Quantity, Quote.Name, Quote.Opportunity.Name FROM QuoteLineItem ...
Я изо всех сил изо всех сил пытался понять это, и ответом на это сообщение было то, что, наконец, помогло мне понять. Здесь очень мало примеров!
Проблема для меня заключалась в том, что порядок, в котором вы устанавливаете отношения между ребенком и бабушкой и дедушкой, противоречит интуиции. Вот как это работает:
(parent).(grandparent).(field)
(parent).(grandparent).(great-grandparent).(field)
Как уже отмечалось, вы можете пройти до 5 уровней.
Несколько примеров (в том числе из ответа здесь):
Цепочка отношений от бабушки и дедушки к родителю и ребенку: возможность - Quote - QuoteLineItem
Пример запроса:
SELECT Id, Quantity, Quote.Name, Quote.Opportunity.Name FROM QuoteLineItem
Цепочка отношений от бабушки и дедушки к родителю и ребенку: Аккаунт - Bill_to_Contact__r (custom) - Цитата
Пример запроса:
SELECT Name, License_To_Contact__r.Name, Bill_To_Contact__r.Account.Name FROM Quote