[SOQL]: Reference Id field on a custom object without dot notation?












2















I know that with standard objects one can do AccountId instead of Account.Id inside a SOQL query. Is it possible to do the same for custom objects, say for My_Object__c? Is there a way to reference the Id without using a dot . notation?



I am currently getting the following error if I use the dot notation: The left operand 'My_Object__r.Id' cannot have more than one level of relationships.



I get this when executing the following query:



SELECT
Id,
My_Object__r.Some_Field__c
FROM Opportunity
WHERE My_Object__r.Id IN (SELECT Id FROM My_Object__c WHERE Name LIKE '%myobjectname%')
LIMIT 1









share|improve this question


















  • 1





    instead of My_Object__r.Id you can just use My_Object__c

    – Pranay Jaiswal
    Dec 3 '18 at 19:08


















2















I know that with standard objects one can do AccountId instead of Account.Id inside a SOQL query. Is it possible to do the same for custom objects, say for My_Object__c? Is there a way to reference the Id without using a dot . notation?



I am currently getting the following error if I use the dot notation: The left operand 'My_Object__r.Id' cannot have more than one level of relationships.



I get this when executing the following query:



SELECT
Id,
My_Object__r.Some_Field__c
FROM Opportunity
WHERE My_Object__r.Id IN (SELECT Id FROM My_Object__c WHERE Name LIKE '%myobjectname%')
LIMIT 1









share|improve this question


















  • 1





    instead of My_Object__r.Id you can just use My_Object__c

    – Pranay Jaiswal
    Dec 3 '18 at 19:08
















2












2








2








I know that with standard objects one can do AccountId instead of Account.Id inside a SOQL query. Is it possible to do the same for custom objects, say for My_Object__c? Is there a way to reference the Id without using a dot . notation?



I am currently getting the following error if I use the dot notation: The left operand 'My_Object__r.Id' cannot have more than one level of relationships.



I get this when executing the following query:



SELECT
Id,
My_Object__r.Some_Field__c
FROM Opportunity
WHERE My_Object__r.Id IN (SELECT Id FROM My_Object__c WHERE Name LIKE '%myobjectname%')
LIMIT 1









share|improve this question














I know that with standard objects one can do AccountId instead of Account.Id inside a SOQL query. Is it possible to do the same for custom objects, say for My_Object__c? Is there a way to reference the Id without using a dot . notation?



I am currently getting the following error if I use the dot notation: The left operand 'My_Object__r.Id' cannot have more than one level of relationships.



I get this when executing the following query:



SELECT
Id,
My_Object__r.Some_Field__c
FROM Opportunity
WHERE My_Object__r.Id IN (SELECT Id FROM My_Object__c WHERE Name LIKE '%myobjectname%')
LIMIT 1






soql






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Dec 3 '18 at 19:05









ArthleteArthlete

852515




852515








  • 1





    instead of My_Object__r.Id you can just use My_Object__c

    – Pranay Jaiswal
    Dec 3 '18 at 19:08
















  • 1





    instead of My_Object__r.Id you can just use My_Object__c

    – Pranay Jaiswal
    Dec 3 '18 at 19:08










1




1





instead of My_Object__r.Id you can just use My_Object__c

– Pranay Jaiswal
Dec 3 '18 at 19:08







instead of My_Object__r.Id you can just use My_Object__c

– Pranay Jaiswal
Dec 3 '18 at 19:08












1 Answer
1






active

oldest

votes


















3














Yes. For some custom relationship from child to parent My_Object__r, your Id will be My_Object__c, and you can reference that field in your SOQL query without performing a join/traversing the relationship. (In fact, it is preferable that you do so!)



The place you have to go somewhere special to determine the relationship name is when you're querying from parent to child, where you locate the child relationship name on the configuration of the lookup on the child.



Here, going from child to parent, your relationship name and Id field name are both derived directly from the API name of the lookup field. The Id field is just the lookup field; the relationship is the lookup field with __r.






share|improve this answer


























  • I completely missed that! Thank you!

    – Arthlete
    Dec 3 '18 at 19:10











Your Answer








StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "459"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsalesforce.stackexchange.com%2fquestions%2f241266%2fsoql-reference-id-field-on-a-custom-object-without-dot-notation%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









3














Yes. For some custom relationship from child to parent My_Object__r, your Id will be My_Object__c, and you can reference that field in your SOQL query without performing a join/traversing the relationship. (In fact, it is preferable that you do so!)



The place you have to go somewhere special to determine the relationship name is when you're querying from parent to child, where you locate the child relationship name on the configuration of the lookup on the child.



Here, going from child to parent, your relationship name and Id field name are both derived directly from the API name of the lookup field. The Id field is just the lookup field; the relationship is the lookup field with __r.






share|improve this answer


























  • I completely missed that! Thank you!

    – Arthlete
    Dec 3 '18 at 19:10
















3














Yes. For some custom relationship from child to parent My_Object__r, your Id will be My_Object__c, and you can reference that field in your SOQL query without performing a join/traversing the relationship. (In fact, it is preferable that you do so!)



The place you have to go somewhere special to determine the relationship name is when you're querying from parent to child, where you locate the child relationship name on the configuration of the lookup on the child.



Here, going from child to parent, your relationship name and Id field name are both derived directly from the API name of the lookup field. The Id field is just the lookup field; the relationship is the lookup field with __r.






share|improve this answer


























  • I completely missed that! Thank you!

    – Arthlete
    Dec 3 '18 at 19:10














3












3








3







Yes. For some custom relationship from child to parent My_Object__r, your Id will be My_Object__c, and you can reference that field in your SOQL query without performing a join/traversing the relationship. (In fact, it is preferable that you do so!)



The place you have to go somewhere special to determine the relationship name is when you're querying from parent to child, where you locate the child relationship name on the configuration of the lookup on the child.



Here, going from child to parent, your relationship name and Id field name are both derived directly from the API name of the lookup field. The Id field is just the lookup field; the relationship is the lookup field with __r.






share|improve this answer















Yes. For some custom relationship from child to parent My_Object__r, your Id will be My_Object__c, and you can reference that field in your SOQL query without performing a join/traversing the relationship. (In fact, it is preferable that you do so!)



The place you have to go somewhere special to determine the relationship name is when you're querying from parent to child, where you locate the child relationship name on the configuration of the lookup on the child.



Here, going from child to parent, your relationship name and Id field name are both derived directly from the API name of the lookup field. The Id field is just the lookup field; the relationship is the lookup field with __r.







share|improve this answer














share|improve this answer



share|improve this answer








edited Dec 3 '18 at 19:18

























answered Dec 3 '18 at 19:07









David ReedDavid Reed

32.2k71948




32.2k71948













  • I completely missed that! Thank you!

    – Arthlete
    Dec 3 '18 at 19:10



















  • I completely missed that! Thank you!

    – Arthlete
    Dec 3 '18 at 19:10

















I completely missed that! Thank you!

– Arthlete
Dec 3 '18 at 19:10





I completely missed that! Thank you!

– Arthlete
Dec 3 '18 at 19:10


















draft saved

draft discarded




















































Thanks for contributing an answer to Salesforce Stack Exchange!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsalesforce.stackexchange.com%2fquestions%2f241266%2fsoql-reference-id-field-on-a-custom-object-without-dot-notation%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

How do I know what Microsoft account the skydrive app is syncing to?

When does type information flow backwards in C++?

Grease: Live!