Types of Joins in X++ | Inner, Outer, Exist & NotExist Join | D365 F&O

Joins in X++ – D365 Finance & Operations

When working with data in X++, joins allow you to combine records from multiple tables in a single select statement. Understanding the different types of joins is essential for writing efficient queries. Let's walk through each one.


Inner Join in X++

An Inner Join is used when you only want records that have a corresponding match in both tables. Here's what to keep in mind:

  • Only records from the first table that have a matching entry in the joined table are included in the result.
  • The matching records from both tables are combined and returned as a single unified record.
  • Any record from the first table that has no related record in the joined table is automatically excluded from the result set.

Outer Join in X++

An Outer Join is more inclusive, it brings back all records from the first table, regardless of whether a match exists in the second table.

  • All records from the first (primary) table are retrieved along with any related records from the joined table.
  • Records are not filtered out based on whether a match exists in the joined table.
  • Where no matching record exists in the joined table, the fields from that table will simply appear as empty/null in the result.

Exist Join in X++

An Exist Join is useful when you only care about whether a related record exists, not what's in it.

  • A record from the first table is included in the result only if at least one matching record exists in the joined table.
  • Importantly, only the fields from the primary table are returned — data from the joined table is not included in the output.

NotExist Join in X++

A NotExist Join is essentially the opposite of an Exist Join.

  • It returns records from the first table only when there is no matching record found in the joined table.
  • This is particularly useful for identifying orphan records or finding data gaps between two tables.

Comments