Lookup Traversal (Joins)
Dot notation walks from the base module across lookup fields into related modules. Each traversal across a lookup field is a join, expressed as LOOKUP_FIELD_NAME.fieldName. Joins can be nested to reach further across modules — lookup_field_1.lookup_field_2.field — with each additional dot adding another hop.
| Expression | Hops | Resolves to |
|---|---|---|
vendor | 0 | The vendor lookup value as a flat id (e.g. "vendor": 88). |
vendor.name | 1 | The name field on the related vendor record. |
priority.displayName | 1 | The displayName of the related priority record. |
vendor.moduleState.displayName | 2 | vendor → that vendor's moduleState → its displayName. |
select id, vendor, vendor.name, vendor.moduleState.displayNamefrom workorderwhere vendor.name like '%Cooling%'Join rules
- A query may contain a maximum of 5 joins (lookup-field traversals of the form
LOOKUP_FIELD_NAME.fieldName). - Nested joins are supported, e.g.
lookup_field_1.lookup_field_2.field. - When you select a lookup field without traversing it, the response contains only the related record id as a flat value (e.g.
"vendor": 88). AddlookupField.someFieldto pull readable values from the related module.
tip
For how lookup fields behave inside where (filtering on the related record id), see Field Types & Comparators.