A self join means joining a table to itself. We do this by giving the table two different names called aliases. Then we join these aliases on columns that relate rows inside the same table. For example, to find each employee's manager, we join the employees table to itself where the employee's manager_id matches the manager's id. The execution table shows step-by-step how each employee row is matched with manager rows. When the join condition is true, the pair appears in the output. When false, it does not. Aliases are important to tell SQL which copy of the table we mean. Changing the join condition changes the relationship direction we find. This concept helps find relationships inside one table using SQL.