Try this code in Query Analyser. It enough for small data. If you want to use for big data, modify the code.
set nocount on
create table #tmpName (ID int, [Name] varchar(255))
create table #tmpRelation (ID int, ID_Parent int)
insert #tmpName (ID, [Name]) select 1, 'Frank'
insert #tmpName (ID, [Name]) select 2, 'Jo'
insert #tmpName (ID, [Name]) select 3, 'Mary'
insert #tmpName (ID, [Name]) select 4, 'Peter'
insert #tmpName (ID, [Name]) select 5, 'Amy'
insert #tmpRelation (ID, ID_Parent) select 1, 0
insert #tmpRelation (ID, ID_Parent) select 2, 1
insert #tmpRelation (ID, ID_Parent) select 3, 2
insert #tmpRelation (ID, ID_Parent) select 4, 1
insert #tmpRelation (ID, ID_Parent) select 5, 2
create table #tmpResult (ID int, ID_Parent int, [Level] int, [Name] varchar(255))
insert #tmpResult (ID, ID_Parent, [Level], [Name])
select N.ID, R.ID_Parent, 0, N.[Name]
from #tmpName N inner join #tmpRelation R on
N.ID = R.ID
where ID_Parent = 0
while exists (select 1 from #tmpName N left join #tmpResult R on N.ID = R.ID where R.ID is null)
begin
insert #tmpResult (ID, ID_Parent, [Level], [Name])
select N.ID, R.ID_Parent, C.[Level] + 1, N.[Name]
from #tmpName N inner join #tmpRelation R on
N.ID = R.ID inner join (
select P.ID, P.[Level]
from #tmpResult P left join #tmpResult C on
P.ID = C.ID_Parent
where C.ID is null
) C on
R.ID_Parent = C.ID
end
select ID, [Level], Name from #tmpResult
drop table #tmpResult
drop table #tmpName
drop table #tmpRelation