ПРИСОЕДИНЯЙТЕСЬ к SOQL в Python - PullRequest
0 голосов
/ 21 июня 2020

Проблема: Используя документацию, приведенную ниже, я безуспешно пытался внутреннее объединить две таблицы SOQL. Может ли кто-нибудь помочь мне понять, что случилось? Предполагая, что это связано с синтаксисом (т.е. скобками). Заранее благодарим!

Документация для объединений:

https://developer.salesforce.com/blogs/developer-relations/2013/05/basic-soql-relationship-queries.html

Python Код SOQL:

records =   sf.query_all('SELECT Event__c.Id, Event__c.Supplier__c,' +
                         ' Event__c.Promo_Models__c, Event__c.Lead_Promo_Model_Name__c,' +
                         ' Event__c.Event_Date__c, Consumer_Feedback__c,' +
                         ' (SELECT Contact.Gender__c, Contact.Ethnicity__c, Contact.CreatedDate FROM Contact)' +
                         ' FROM Event__c' +
                         ' WHERE Event__c.Lead_Promo_Model__c IN (SELECT Contact.Id FROM Contact)' +
                         ' AND Supplier__c LIKE \'ABCCompany%\'' +
                         ' AND Event_Date__c > 2019-06-30' + 
                         ' AND Event_Date__c < 2020-07-01', include_deleted=False)

df_sf = pd.DataFrame(records['records'])

Ошибка:

Файл «», строка 10 'ГДЕ Событие __ c .Lead_Promo_Model __ c IN (' SELECT Contact.Id FROM Contact ')' + ^ SyntaxError: недопустимый синтаксис

1 Ответ

0 голосов
/ 24 июня 2020

Если используется связь встроенного объекта с настраиваемым объектом, вам необходимо прочитать пример на этой странице документации. Общие сведения об именах отношений, настраиваемых объектах и ​​настраиваемых полях .

Вам нужно найти определение поля вашего настраиваемого поля Event__c.Lead_Promo_Model__c, которое связано с Contact (это отношение является следствием вашего условия WHERE), и прочитать строки «Метка связанного списка» и «Имя дочернего отношения». Оба, вероятно, являются «Контакты» по умолчанию, но первая может быть любой строкой, а вторая - любым именем API. Затем вы добавляете «__r» к элементу «Имя дочернего отношения».

Вы заменяете (SELECT Contact.Gender__c,... FROM Contact) на (SELECT Contact.Gender__c,... FROM Contact__r). См. Contact__r заменено . Вот и все.

Я ожидаю, что все остальные части исправны или вы легко можете их исправить. Никто другой не знает имен ваших настраиваемых полей. Вы можете убедиться, что все, кроме вложенного SELECT, работает, а затем добавить подзапрос с собственными полями ... (SELECT Contact.Id FROM Contacts__r) ... и, наконец, также с настраиваемыми полями Contact.

Второй снимок экрана в документации немного устарел без «Связанного списка» Метка ", но для SOQL это не важно.

...