Self Joins and Cross Joins
Self-joins are a popular database join method or process in SQL database management systems, where the database uses user-created tables as self-joins. Self-joins are used when database users want to compare table rows within the same database table, or to find relationships between rows within different database tables. Essentially, a self-table join is the concept of joining or relating a table to itself. A self-join is typically used to find differences between different instances of the same table using table aliases.

Why use self-joins in SQL database management systems?
Self-joins are used when database users want to compare table data from different tables to find differences between table columns. For example, a database user has a built-in employee table, and they want to compare employees to their manager or another table column field in the same table, either for employees or positions.
This allows a database user to link a row in a table to another row in the same table based on a related column.
The syntax of a self-join in an SQL database.
SELECT X.column1, X.column2, Y.column1, Y.column2
FROM table_name X, table_name Y
WHERE X.common_column = Y.common_column;
X and Y are aliases for the same database table.
The common_column in the database table alias is the column that the database user can use to match rows in the table.
Example of a self-join in an SQL database.
- Here, the database user analyzes a table named Employee. In the Employee table, each employee has column information such as employee_id, employee_name, and manager_id. Manager_id represents the employee_id of the employee’s manager.
Employee Table Detail Information.
employee_id emp_name Manager_id
101 Siddhi Deora 2
201 Harry Deora 3
301 Bhavishi Deora 1
307 Anil Jain NULL
Employee Table Self-Join Query.
SELECT X.emp_name AS employee, Y.emp_name AS manager
FROM employee X
LEFT JOIN employee Y
ON X.manager_id = Y.employee_id;
Employee Table Self-Join Query Explanation.
- In this example, X is Employee, which previews the value of the employee being queried.
- Y is the Manager table column, displaying the value of the employee identified as a manager.
- The LEFT JOIN method ensures that employees without a manager are included in the result. For example, Anil Jain is included in the result.
Result of Self-Join Query.
Employee manager
Siddhi deora Harry deora
Harry deora Bhavshi deora
Bhavshi deora Siddhi deora
Anil Jain NULL
How self-joins work in SQL databases.
- Here, each employee in the Employee table is properly matched with their manager using the manager_id column.
- For employees who do not have a manager ID, such as Anil Jain, the result displays a NULL value for manager.
What is a cross join in an SQL database?
A cross join in a database table is a type of table join operation that produces a Cartesian product result between two user-selected tables. This means that every row in the first database table is combined or grouped with every row in the second database table. Unlike other types of joins, a cross join does not require an ON condition to match table rows.
Cross Join Cartesian Product – If table X has m rows and table Y has n rows, the cross-join result will be m * n rows.
A database user can obtain large-volume result sets from a cross-join operation in a database, especially if both database tables contain large-volume table data.
The syntax of a cross join in a database table.
SELECT column1, column2, …
FROM tableX
CROSS JOIN tableY;
Example of a database table cross join.
Here, a typical user will analyze two simple colors and choices tables in detail.
First, the colors table.
color_id color_name
1 Pink
2 Lime
Second, the choices table.
choice_id choice_name
1 Good
2 Very Good
3 Fantastic
Cross join table query.
SELECT colors.color_name, choice.choice_name
FROM colors
CROSS JOIN choice;
Cross join table explanation.
- The query returns every combination of values from the colors and choices tables, creating a Cartesian product of the two tables.
Result of the cross-join table.
color_name choice_name
Pink good
Pink Very Good
Pink Fantastic
Lime good
Lime Very Good
Lime Fantastic
How a cross join works in a SQL database.
There are two separate database tables, where each row in the colors table is grouped with each row in the choices table and combined, creating possible table combinations.
Since there are no conditions or ON clauses, it simply displays each row in the first table grouped with each row in the second table.
Main Differences Between Self Join and Cross Join.
| Join Aspect | Self-Join explanation | Cross-Join explanation |
| Join Purpose | Self-join used to Joining a table with itself to compare own table rows. | Cross-join used to Combining all rows from two tables at a time. |
| Matching join Rows | Self-join matches table Rows are matched using a condition (e.g, ON clause with expression) | Cross-join used No matching table row or condition; it all rows are combined as a group. |
| output Set | Self-join Returns single table rows based on relationships within the same table column data. | Cross-join table Returns every combination of rows from both database tables. |
| Where to Use Case | Self-join used where we need to Comparing employee and managers, hierarchical table relationships. | Cross-join used to Generating combinations of table rows, like product listings with choice/colors table. |
Conclusion of Self Joins and Cross Joins.
- Self joins are used in SQL database tables when a database user needs to self-join a table, typically when using a hierarchical or recursive table column relationship, for example, employee and manager are a single table column.
- A cross join previews the Cartesian product result of two different database tables, creating a result containing every possible combination of rows from both database tables. This is used when the database user needs all combinations of table data, but be careful here because if the tables included in this process are large volume tables, it can preview large result sets as output.
