---
title: "SOQL for Polymorphic relationships"
url: "https://blog.beyondthecloud.dev/tips/soql-for-polymorphic-relationships"
category: "SOQL"
published: "2024-07-23"
---

# SOQL for Polymorphic relationships

You can leverage TYPEOF keyword in your SOQL queries!

Do you use polymorphic relationships?

You can leverage TYPEOF keyword in your SOQL queries!

```sql
SELECT
    Id,
    WhoId,
    TYPEOF Who
        WHEN Contact THEN Name, Account.Name
        WHEN Lead THEN Id, Company
    END
FROM Task
```

Now instead:

```apex
for(Lead lead: [SELECT Id, OwnerId, Owner.Name, Owner.Type, Owner.Email, Owner.Phone FROM Lead]) {
    if(lead.OwnerId.startsWith('005')){
        ...
    } else {
        ...
    }
}
```

Do the following:

```apex
for(Lead lead: [
    SELECT
        Id,
        OwnerId,
        TYPEOF Owner WHEN Group THEN Name, Type WHEN User THEN Name, Email, Phone END
    FROM Lead
]) {
    if(lead.Owner instanceof Group) {
        ...
    } else {
        ...
    }
}
```
