When you use a Relation property in a Notion database, you might expect to filter the linked records by conditions that combine two or more properties, such as “Status is Done and Priority is High.” However, Notion’s Relation filter only allows a single predicate — a condition based on one property. This limitation applies to both the database view filter and formula functions that reference the relation. The root cause lies in how Notion stores relation data as a simple array of page IDs rather than as a queryable sub-database. This article explains the technical reason for that restriction and provides practical workarounds to achieve multi-property filtering on related records.
Key Takeaways: Notion Relation Single-Predicate Filter Limit
- Relation property data structure: Stores only linked page IDs, not property values, so filters cannot evaluate multiple conditions on the related database.
- Database view filter on relation: Supports only one predicate (e.g., “Status contains Done”) per relation column, not compound AND/OR conditions.
- Formula workaround using rollup: Combine a Rollup property with a checkbox formula on the related database to emulate multi-property filtering.
Why Notion Relation Filters Only One Property
Notion’s Relation property is a reference field that links a page in one database to one or more pages in another database. When you open a relation cell, you see linked page titles and possibly a preview of properties, but the underlying data is simply an array of page IDs. This design keeps the relation lightweight and fast. However, it also means that when you add a filter to a relation column in a database view, Notion cannot query the related database’s properties in real time. The filter works by checking whether the linked page ID matches a condition, and that condition can only evaluate a single property from the related page. For example, you can filter by “Related Task Status is Done” but not by “Related Task Status is Done AND Related Task Priority is High.” Notion’s filter engine does not support sub-queries or joins that would allow multi-property predicates on relations. This is a deliberate architectural choice to maintain performance and simplicity.
How Notion Represents Relation Data Internally
Each relation cell stores a list of UUIDs that correspond to pages in the target database. When you open a relation, Notion fetches the titles and selected properties for display. But for filtering, the engine only sees the UUID list. A filter predicate like “contains” or “is” checks if a specific page ID is present. To support multi-property predicates, Notion would need to execute a query against the target database for every row in the source database, which becomes expensive as databases grow. Instead, Notion limits relation filters to single-property conditions, relying on the user to structure data differently when complex filtering is needed.
Workarounds for Multi-Property Filtering on Related Records
Because you cannot directly filter a relation by multiple properties, you can restructure your data or use formulas to achieve the same result. Below are three practical methods.
Method 1: Add a Computed Property on the Related Database
- Create a formula property in the target database
Open the database that contains the pages you link to. Add a Formula property. Write a formula that returns a boolean (true/false) when both conditions are met. For example:if(prop("Status") == "Done" and prop("Priority") == "High", true, false). Name this property “Ready for Review” or whatever fits your use case. - Roll up the computed property to the source database
In the source database, add a Rollup property that references the relation and pulls the computed formula value. Set the rollup aggregation to “Show original” if you want to see the exact boolean, or “Checked” if you want a checkbox. - Filter by the rollup value
Now you can filter the source database view by the Rollup property. For example, filter where “Ready for Review” is checked. This effectively filters the relation by the multi-property condition defined in the target database.
Method 2: Use a Linked Database View with a Compound Filter
- Create a linked view of the target database
In the source page or database, add a Linked database block that points to the target database. This gives you a full view of the target database with all its properties. - Apply a compound filter to the linked view
Click the filter icon on the linked database view. Add multiple filter conditions. For example, add “Status contains Done” and “Priority contains High” and set the filter group to “AND.” This filters the displayed records to only those that meet both conditions. - Use the filtered list as a manual relation picker
When you need to link a page, open the relation and see only the filtered list. This is not automatic but gives you a visual filter that matches multi-property criteria.
Method 3: Build a Helper Database with a Precomputed Join
- Create a new database that acts as a bridge
Build a database that contains one page for each combination of the source page and the target page. Each page has a relation to the source and a relation to the target, plus a formula that checks the multi-property condition on the target. - Filter the bridge database
In the bridge database, filter by the formula property that returns true only when both target conditions are met. Then use a rollup or relation from the source to this filtered set. - Reference the filtered bridge in your source
Add a relation from the source database to the bridge database. This is complex to set up but works for advanced automation scenarios.
If the Relation Filter Still Does Not Work as Expected
Even with workarounds, you may encounter situations where the filter does not behave as you want. Below are common issues and their solutions.
Rollup Shows “No Data” or Is Empty
A rollup that pulls a formula from the target database may return empty if the relation is not properly set or if the formula property is hidden. Check that the relation property on the source page actually links to a page. Also ensure the target database formula property is visible and not set to “Hide when empty.”
Linked Database View Does Not Update Automatically
Linked database views are static snapshots until you refresh the page. If you change a property value in the target database, the linked view may not reflect the change immediately. Press F5 or click the refresh button in the database toolbar to force an update.
Compound Filter on Relation Column Is Grayed Out
When you add a filter directly on a relation column in the source database, Notion only allows one condition. The filter group dropdown (AND/OR) is disabled. This is by design. You must use the rollup method or a linked view to apply multiple conditions.
| Filter Approach | Single Property | Multi-Property |
|---|---|---|
| Direct relation column filter | Supported | Not supported |
| Rollup + formula in target database | Supported | Supported with one extra property |
| Linked database view with compound filter | Supported | Supported |
| Bridge database with join | Supported | Supported with complex setup |
Notion’s relation filter is intentionally limited to a single predicate to keep the database engine fast and simple. By using a rollup property that aggregates a precomputed multi-property condition from the target database, you can effectively filter related records by multiple criteria. For ad hoc filtering, a linked database view with a compound filter gives you full control without restructuring your data. If you need automated multi-property filtering across many pages, consider the bridge database approach. Experiment with the rollup method first — it requires the least maintenance and scales well for most workflows.