Skip to main content

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.

ExpressionHopsResolves to
vendor0The vendor lookup value as a flat id (e.g. "vendor": 88).
vendor.name1The name field on the related vendor record.
priority.displayName1The displayName of the related priority record.
vendor.moduleState.displayName2vendor → 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). Add lookupField.someField to 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.