I am giving you a scenario where self join is used.
suppose that you have select an employee record whose id=107 than your query should be like this
select * from employee where id=107;
Now suppose you have to select the employee record whose id's are equals to cid. So here you have to use join because you have to compare two column's. The query should be like this
select * from employee e1, employee e2 where e1.id=e2.cid;
Correct me if i am wrong.