问题描述
我是 SalesForce 和 SOQL 的新手,如果问题已经得到解答,请提前抱歉,如果是,请联系我。
我的 SOQL 查询的目的是获取所有合同信息以生成 PDF。
有表格:Contract、Contact和Account
在合同表中有字段:Maitre_d_apprentissage__c、MaitreApprentissageNom1__c、MaitreApprentissagePrenom1__c、Apprenti__c、ApprentiNom__c、ApprentiPrenom__c
有关系:
- Apprenti__r 将 Apprenti__c 链接到 Contact 表
- Maitre_d_apprentissage__r 将 Maitre_d_apprentissage__c 链接到 Contact 表
当我查看表时,我看到 MaitreApprentissageNom1__c 等于 Maitre_d_apprentissage__r.LastName,ApprentiNom__c 等于 Apprenti__r。姓氏。所以我得出结论,我可以按照相同的原则从 Contact 表中获取 Apprenti__c 和 Maitre_d_apprentissage__c 的其他信息。所以我添加到我的查询 Apprenti__r.Date_de_naissance__c 和 Maitre_d_apprentissage__r.Date_de_naissance__c 以获取我的联系表中的 Date_de_naissance__c 字段。
我在结果中看到查询成功获取信息但某些值已更改列(第 6 行和第 7 行),您可以看到查询 1 和查询 2 之间的区别。在第一个查询中,我只返回 Apprenti__r.Date_de_naissance__c 在第二个查询中我返回 Apprenti__r.Date_de_naissance__c 和 Maitre_d_apprentissage__r.Date_de_naissance__c
查询 1:
SELECT ApprentiNom__c,ApprentiPrenom__c,Apprenti__r.Date_de_naissance__c,MaitreApprentissageNom1__c,MaitreApprentissagePrenom1__c
FROM Contract
结果 1:
查询 2:
SELECT ApprentiNom__c,MaitreApprentissagePrenom1__c,Maitre_d_apprentissage__r.Date_de_naissance__c
FROM Contract
结果 2:
我想了解问题从何而来以及如何纠正。提前致谢。
解决方法
可能只是您的查询编辑器显示内容不正确。您可以看到它与对 Contact 表的 2 次查找混淆,为什么甚至还有一个列标题“Contact.Date_de_naissance__c”(以及为什么它出现两次)。而且它们没有按照您要求的顺序显示...
你用的是什么编辑器?您可以尝试内置“开发者控制台”或 http://workbench.developerforce.com/
你需要它做什么?在 Apex 字段顺序无关紧要,在 REST API 查询中,通过查找获取的值将作为 JSON 子对象出现,因此总有一种方法可以准确确定哪个值来自哪个关系。
在 Dev Console 中尝试运行它并检查它是否解决了您的担忧:
System.debug(JSON.serializePretty([SELECT
ApprentiNom__c,ApprentiPrenom__c,Apprenti__r.Date_de_naissance__c,MaitreApprentissageNom1__c,MaitreApprentissagePrenom1__c,Maitre_d_apprentissage__r.Date_de_naissance__c
FROM Contract]));
然后添加 Maitre_d_apprentissage__r.LastName
进行查询,看看发生了什么变化,保持原样。