1

I'm trying to query Task from Lead. In the developer console > query editor, I have the following SOQL query:

 SELECT name, (SELECT id, subject, description FROM Tasks)
 FROM Lead
 WHERE id = '00JQ0000005h0FfQPP'
 LIMIT 1

This returns

Name: Robby

Robson Tasks: [{"Id":"00JT000000YzDA9NNP","Subject":"Call","Description":"Had a call with Robbie. Need to follow up in a week."}]

But when I execute the following in the anonymous window:

lead d = [SELECT name, (SELECT id, subject, description FROM Tasks)
          FROM Lead
          WHERE id = '00JQ0000005h0FfQPP'
          LIMIT 1];
system.debug(d);

I just get:

|USER_DEBUG|[10]|DEBUG|Lead:{Name=Robby Robson, Id=00JQ0000005h0FfQPP}

The purpose of the script is to fetch the description from the latest task associated with the lead. Originally I thought I could just do this:

string lastNote = [SELECT (SELECT description FROM Tasks Order By CreatedDate Limit 1)
                   FROM Lead
                   WHERE id = :upsertedLeads[i].getId()
                   LIMIT 1].tasks[0].description;

But that returns an index out of bounds, due to tasks[0].

How should I proceed?

Thanks!

3

System.debug(d) is the issue because d has been defined as a lead record. If you want the task, than debug that. It's not that your query isn't working, you just aren't debugging more than the lead record.

But, I agree that you should just query task directly.

| improve this answer | |
2

You can directly query the Task object using the Lead Id and use the description without doing the parent child subquery.

Task recentLeadTask = [Select Id, Description From Task Where WhoId = :YourLeadId Order By CreatedDate Limit 1];  
if(recentLeadTask != null)  
    String taskDescription = recentLeadTask.Description; 

looking at your last part of code, it seems you are running this query inside a loop which is not generally not recommended since it will hit the governor limits..

if that's the case consider moving the query out of the loop.

| improve this answer | |
  • Good call regarding the loop. It's a bad habit of mine. Your method totally works - but why isn't mine working as well? – ZAR Aug 4 '15 at 14:49

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.