Two tables:
//SKILL
SNAME
---------------------
C++
C#
C
JAVA
//REQUIRED
SNAME REQUIRED
------------------------
C++ C
C#
Use CTE to make it generic. Levels may go deeper than just 2. Use the following query to get required result.
with cte
As
(
Select SName, [Required] from courses where SName = 'C++'
Union All
Select courses.SName, courses.[Required] from courses
inner join cte on courses.SName = cte.[Required]
)
select * from cte
Hope it helps.