Skip to main content

Get Child and Parent from hierarchy Table using Common Table Expression (CTE) - SQL 2005 and above

hi, just want to post something that might be useful

DECLARE @a AS TABLE
(
autoid INT 
, name VARCHAR(20)
, parentid INT
)

INSERT INTO @a (autoid, name, parentid)

SELECT 1, '1', 0
UNION ALL
SELECT 2, '1.1', 1
UNION ALL
SELECT 3, '1.2', 1
UNION ALL
SELECT 4, '1.2.1', 3
UNION ALL
SELECT 5, '2.1', 2
UNION ALL
SELECT 6, '3.1', 3
UNION ALL
SELECT 7, '3.2', 3

/*
1 1 0
2 1.1 1
3 1.2 1
4 1.2.1 3
5 2.1 2
6 3.1 3
7 3.2 3
*/

/*
Get Parent Records from child '1.2.1'
return:
1.2 (parent from '1.2.1')
1 (parent from '1.2')
*/
;WITH    employeeMaster
      AS ( SELECT   p.autoid ,
                    p.parentid ,
                    p.[name]
           FROM     @a p
           WHERE    p.[NAME] = '1.2.1'
           UNION ALL
           SELECT   c.autoid ,
                    c.parentid ,
                    c.[name]
           FROM     employeeMaster cte
                    INNER JOIN @a c ON c.autoid = cte.parentid
         )

SELECT  *
FROM    employeeMaster m
WHERE m.[name] <>  '1.2.1'

/*
Get Child Records from parent '1.2'
return: 
1.2.1
3.1
3.2
*/
;WITH    employeeMaster
      AS ( SELECT   p.autoid ,
                    p.parentid ,
                    p.[name]
           FROM     @a p
           WHERE    p.[NAME] = '1.2'
           UNION ALL
           SELECT   c.autoid ,
                    c.parentid ,
                    c.[name]
           FROM     employeeMaster cte
                    INNER JOIN @a c ON c.parentid = cte.autoid
         )

SELECT  *
FROM    employeeMaster m
WHERE m.[name] <>  '1.2'

see u

Comments

Popular posts from this blog

Crystal Report 2010 - Failed to load database information

"Failed to load database information" error when i try deploy my program with CR 2010 using TTX file as report definition this is because there is missing .dll, call "CRDB_FIELDDEF.DLL"..u need to manually copy the file to "C:\Program Files (x86)\SAP BusinessObjects\Crystal Reports for .NET Framework 4.0\Common\SAP BusinessObjects Enterprise XI 4.0\win32_x86" folder then the report is loading again it said that TTX is old tech but i'm still using it because i don't need to connect the report to any DB, but until i found new one to replace :D check this link to read it [EDIT 25 Jan 2011] i think i'll using ADO.NET Dataset next time :D until then

Resolve Collation error in SQL Server

i often get this error when trying to JOIN some table Cannot resolve the collation conflict between "SQL_Latin1_General_CP850_CI_AS" and "SQL_Latin1_General_CP1_CI_AS" in the equal to operation. u need to use COLLATION when performing the JOIN, something like this SELECT field1 FROM table1 INNER JOIN table2 ON table1.field3 COLLATE DATABASE_DEFAULT = table2.field4 COLLATE DATABASE_DEFAULT i found this when trying to JOIN, maybe it affect other areas..until i found one see u

Session timeout problem in IIS

Hi, Long time no post, i will try to post again since i came out searching a typical solution over and over again :D Now i'm gonna post about session. Since i got this from other link so here it is So I started looking into the IIS settings and came to know that i missed two things to change : Application pool’s Idle Time-out (minutes) Session state  – State server’s Time-out (seconds) Once I have changed above settings than after Session timeout worked. So after that I have made one checklist that can help us to validate Session timeout settings, here i am sharing it with you as well so that you will also get some benefits from it : Application Pool  – Advanced Settings Menu – Process Model – Idle Time-out (minutes) Sites –  Session State  – Cookie Settings – Time-out (minutes) If you are using  State Server  or  SQL Server  to manage your session (instead of InProcess), Here is the steps to follow :    ...