Click here to Skip to main content
15,883,825 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
hi all

I create table Name Family
include memberID , Name , ParentID
and it contain data

so how can I select specific Name using its id and get full name for this child

name + parent name 2 + parent name 1 for parent name 2 + parent name 1


please help :)
Posted
Comments
Zoltán Zörgő 25-Sep-15 16:32pm    
What RDBMS are you using? Not all implement recursive selection.

1 solution

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:
SQL
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
(
-- Anchor member definition
    SELECT e.parent, e.id, e.Name, 
        0 AS Level
    FROM dbo.family AS e
    WHERE e.id = 6
    UNION ALL
-- Recursive member definition
    SELECT e.parent, e.id, e.Name,
        Level + 1
    FROM dbo.family AS e
    INNER JOIN Ancessors AS d
        ON e.id = d.ParentID
)
-- Statement that executes the CTE
SELECT ParentID, ID, Name, Level
FROM Ancessors 

GO
 
Share this answer
 
v2
Comments
sam9787 25-Sep-15 16:47pm    
MemberId Name ParentId
1 MIKE NULL
2 John 1
3 WILTH 1
4 sam 2
5 malik 2
6 joly 5


I try to use one select statement to get full Joly Name
the result must be ( joly mailk john mike )

I using sql server as database :)
Zoltán Zörgő 25-Sep-15 17:05pm    
See update
sam9787 25-Sep-15 17:14pm    
ok
sam9787 25-Sep-15 17:20pm    
thanks you very much :)
Zoltán Zörgő 25-Sep-15 17:21pm    
For nothing. And where are my 5 points? :)

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900