Pull fields from related rows, count tasks per project, wire two-way linked relations, and embed subtables — so your tables always have the context they need without duplicating data.
A Relation column stores a reference to a row in another table — not a copied text string. To set one up: click a column header → change type to Relation → choose the target table. The cell shows the target row's display column as a clickable pill. Why this matters: rename the target row once, and that name updates everywhere the relation is used. No stale copies, no manual find-and-replace.
| Task | Project Relation | Status Select | Due Date Date |
|---|---|---|---|
| Write landing copy | Website Redesign | In Progress | Apr 20 |
| Create Figma frames | Website Redesign | To Do | Apr 25 |
| Record demo video | Product Launch | To Do | Apr 30 |
Once a Relation column exists, pull any field from the related row using dot notation. These are "virtual" derived columns — they compute from the relation automatically and update whenever the source row changes.
You can chain any column from the related row: thisRow.[Project].[Due Date], thisRow.[Project].[Status], and so on. Each lookup column is read-only — to change the value, edit the source row in the related table.
| Task | Project Relation | Project Owner Lookup | Project Status Lookup |
|---|---|---|---|
| Write landing copy | Website Redesign | Amara Osei | In Progress |
| Create Figma frames | Website Redesign | Amara Osei | In Progress |
| Record demo video | Product Launch | Priya Mehta | To Do |
thisRow.[Project].[Owner]
thisRow.[Project].[Status]
Sections 01–02 looked up data from child to parent (Task → Project). Now flip it: from the Projects table, get all tasks that belong to each project using a filter on the Tasks table, then chain aggregate functions.
Tasks.Filter([Project] = thisRow)
From there, chain additional operations to produce the numbers your dashboard needs:
// Task count per project Tasks.Filter([Project] = thisRow).Count() // Total estimated hours Tasks.Filter([Project] = thisRow).Sum([Estimate]) // Completed task count Tasks.Filter([Project] = thisRow).Filter([Done] = true).Count() // Overdue open tasks Tasks.Filter([Project] = thisRow) .Filter([Done] = false) .Filter([Due Date] < Today()) .Count()
| Project | Total Tasks Formula | Total Estimate Formula | Done Formula | Overdue Formula |
|---|---|---|---|---|
| Website Redesign | 8 | 42 hrs | 3 | 2 |
| Product Launch | 12 | 68 hrs | 9 | 0 |
When you set up a Relation column in Tasks pointing at Projects, Coda automatically creates a corresponding linked relation column in Projects. No formula needed — Coda maintains both directions. Edit a task's project in either table and both stay in sync.
Add a Project Relation column in Tasks pointing at the Projects table.
A Tasks linked relation column in Projects appears, showing all task rows that reference each project.
This enables bidirectional navigation: from a project row you can see and open all its tasks; from a task row you can navigate directly to its project. No formula column required for either direction.
A Subtable block shows related rows as an inline editable mini-table inside a canvas column or a row's expanded detail view. Add a Subtable → choose the relation column → related rows appear. Best for viewing a task list inside a project detail view without leaving the row.
The most common mistake: writing thisRow.[Project].[Owner] in a table where Project is a plain Text column. You can't "dot into" a string. The formula will error. Fix: open the column settings, change type to Relation → Projects, then the lookup works.
Project column is Text type. thisRow.[Project].[Owner] throws an error — can't reference fields from a text value.
Change Project to Relation → Projects. Now thisRow.[Project].[Owner] follows the link and retrieves the field.
Full CRM example: a Contacts table with a Company Relation column pointing at a Companies table. Derived columns pull Company data through automatically.
| Contact | Company Relation | Industry Lookup | ARR Lookup | Owner Lookup |
|---|---|---|---|---|
| James Mwangi | Aether Systems | SaaS | $12M | Priya Mehta |
| Sophia Kamau | Aether Systems | SaaS | $12M | Priya Mehta |
| David Okonkwo | Horizon Retail | E-commerce | $4.2M | Sam Torres |
thisRow.[Company].[Industry]
thisRow.[Company].[ARR]
Contacts.Filter([Company]=thisRow).Count()