This post aims to record my latest sql construction feat.
This is all about sql construction for recursion query using ms sql database.
Consider this table:
PARENT | CHILD -------+------- 0 | 1 1 | 2 2 | 3 1 | 4 4 | 5 5 | 6 2 | 7 6 | 8
As you can see, this table has a parent - child relationship.
What I want to get is to return the last child (grandchild) on the link using the given Child ID.
For example, If i use the Child ID number 1, the query should return 3,7,8.
The chains are shown below:
1 > 2 > 3
1 > 2 > 7
1 > 4 > 5 > 6 > 8
To achive this, here is the recursion query for ms sql database:
;WITH CTE(child, parent) AS ( SELECT child, parent FROM tbl_main WHERE parent = 1 UNION ALL SELECT A.child, A.parent FROM tbl_main A INNER JOIN CTE B ON B.child = A.parent ) SELECT T1.child FROM CTE T1 LEFT OUTER JOIN CTE T2 ON T1.child = T2.parent WHERE T2.parent IS NULL
(Note: replace tbl_main with your table name)
This query perfectly returns what I need.
I just hope that my Google may index this post for my fellow programmers who would have the same problem in the future.
Happy coding!
0 Comments :
Post a Comment