Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

एक बच्चे के लिए सभी माता-पिता प्राप्त करें

एक बच्चे के सभी माता-पिता को पाने के लिए यह प्रयास करें

;with name_tree as 
(
   select id, parentid
   from Users
   where id = 47897 -- this is the starting point you want in your recursion
   union all
   select C.id, C.parentid
   from Users c
   join name_tree p on C.id = P.parentid  -- this is the recursion
   -- Since your parent id is not NULL the recursion will happen continously.
   -- For that we apply the condition C.id<>C.parentid 
    AND C.id<>C.parentid 
) 
-- Here you can insert directly to a temp table without CREATE TABLE synthax
select *
INTO #TEMP
from name_tree
OPTION (MAXRECURSION 0)

SELECT * FROM #TEMP

परिणाम देखने के लिए यहां क्लिक करें

संपादित करें:

यदि आप तालिका चर में सम्मिलित करना चाहते हैं, तो आप कुछ ऐसा कर सकते हैं:

-- Declare table varialbe
Declare @TABLEVAR table (id int ,parentid int)


;with name_tree as 
(
   select id, parentid
   from #Users
   where id = 47897 -- this is the starting point you want in your recursion
   union all
   select C.id, C.parentid
   from #Users c
   join name_tree p on C.id = P.parentid  -- this is the recursion
   -- Since your parent id is not NULL the recursion will happen continously.
   -- For that we apply the condition C.id<>C.parentid 
    AND C.id<>C.parentid 
) 
-- Here you can insert directly to table variable
INSERT INTO @TABLEVAR
select *
from name_tree
OPTION (MAXRECURSION 0)

SELECT * FROM @TABLEVAR

परिणाम देखने के लिए यहां क्लिक करें



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर में "COALESCE के लिए कम से कम एक तर्क एक अभिव्यक्ति होना चाहिए जो NULL स्थिरांक नहीं है" ठीक करें

  2. Azure SQL डेटाबेस में DTU क्या है और यह कैसे पता करें कि हमें कितनी आवश्यकता है

  3. SQL सर्वर में तालिका नाम का नाम कैसे बदलें

  4. SQL क्वेरी के निष्पादन का क्रम

  5. SQL सर्वर में स्वचालित योजना सुधार