# Multi Join

Multi Join allows for the combination of N tables into a single table, based on a series of common columns.

<figure><img src="https://2577551913-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MW_FvcY52Jcyt8JHFGs%2Fuploads%2F6ViqY4kUoCzTsXoPgpZE%2FMulti%20Join%2001.gif?alt=media&#x26;token=e4aa239a-07ac-49cb-a014-7362fe3bc22f" alt=""><figcaption></figcaption></figure>

### Input / Output

| Input                             | Output                                                        |
| --------------------------------- | ------------------------------------------------------------- |
| **Table\[s] to join** - any table | A single table with merged data from all of the input tables. |

### Joins

To configure the tool, you will need to select the joining columns for each pair of tables you want to join. For each join you must select a table and column on the left side that will be joined with a table and column on the right side. You will need to define N-1 joins to join N tables together.

### Additional Options

| Option     | Description                                                                                                                               |
| ---------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| Inner Join | If checked, only rows that join from all inputs will result (i.e. an inner join). If unchecked, all rows will result (ie. an outer join). |

{% hint style="info" %}
*Tip: use the Multi Join* tool *instead of chaining several* [*Join*](https://docs.cascade.io/cascade/tools/combine/join) *steps together.*
{% endhint %}

## Example #1&#x20;

Let's say we have three tables **Orders**, **Shipments**, and **Customers**, and our goal is to create a single unified table of all orders, corresponding shipments, and have each order enriched with customer information. You would need to perform *two* joins:

* Orders.OrderID <-> Shipments.OrderID
* Orders.CustomerID <-> Customers.CustomerID

If you wish to include all orders that have not yet been shipped, you would need to uncheck the Inner Join config option.&#x20;

## Example #2

Say for example you have three tables **OnlineCustomers**, **StoreVisitors**, and **Demographics,** and all three need to be joined together on the *same email field.* You simply need to define two joins:

* OnlineCustomers.Email <-> StoreVisitors.Email
* StoreVisitors.Email <-> Demographics.Email

### Suggested Articles

{% content-ref url="../../cascade-faqs/knowledge-based/understanding-the-join-options-in-the-cascade-join-tool" %}
[understanding-the-join-options-in-the-cascade-join-tool](https://docs.cascade.io/cascade/cascade-faqs/knowledge-based/understanding-the-join-options-in-the-cascade-join-tool)
{% endcontent-ref %}
