Supposing you are using SQL Server, you can use CTE to issue recursive query:
https://technet.microsoft.com/en-us/library/ms186243(v=sql.105).aspx[
^]
In Oracle you have SELECT LEVEL
http://docs.oracle.com/cd/B19306_01/server.102/b14200/queries003.htm[
^]
In MySQL you can also issue hierarchical queries:
http://explainextended.com/2009/03/17/hierarchical-queries-in-mysql/[
^]
SQL Server example:
CREATE TABLE [dbo].[family](
[id] [int] NULL,
[name] [nvarchar](50) NULL,
[parent] [int] NULL
) ON [PRIMARY]
GO
INSERT [dbo].[family] ([id], [name], [parent]) VALUES (1, N'Mike', NULL)
GO
INSERT [dbo].[family] ([id], [name], [parent]) VALUES (2, N'John', 1)
GO
INSERT [dbo].[family] ([id], [name], [parent]) VALUES (3, N'Wilth', 1)
GO
INSERT [dbo].[family] ([id], [name], [parent]) VALUES (4, N'Sam', 2)
GO
INSERT [dbo].[family] ([id], [name], [parent]) VALUES (5, N'Malik', 2)
GO
INSERT [dbo].[family] ([id], [name], [parent]) VALUES (6, N'Joly', 5)
GO
WITH Ancessors (ParentID, ID, Name, Level)
AS
(
SELECT e.parent, e.id, e.Name,
0 AS Level
FROM dbo.family AS e
WHERE e.id = 6
UNION ALL
SELECT e.parent, e.id, e.Name,
Level + 1
FROM dbo.family AS e
INNER JOIN Ancessors AS d
ON e.id = d.ParentID
)
SELECT ParentID, ID, Name, Level
FROM Ancessors
GO