繁体   English   中英

在 Python 中加入 SOQL

[英]JOIN with SOQL in Python

问题:使用下面链接的文档,我尝试将两个 SOQL 表内部连接在一起,但没有成功。 谁能帮我找出问题所在? 假设它与语法(即括号)有关。 提前致谢!

连接文档:

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

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 行 ' WHERE Event__c.Lead_Promo_Model__c IN ('SELECT Contact.Id FROM Contact')' + ^ SyntaxError: invalid syntax

如果使用了从内置 object 到自定义 object 的关系,那么您需要阅读此文档页面上的示例了解关系名称、自定义对象和自定义字段

您需要找到与Contact有关系的自定义字段Event__c.Lead_Promo_Model__c的字段定义(此关系是您的 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)...最后还有联系人的自定义字段。

文档中的第二个屏幕截图在没有“相关列表标签”的情况下已经过时,但对于 SOQL 来说并不重要。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM