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

मूल आईडी के आधार पर सभी डेटा को पुन:प्राप्त करें

यह सामान्य तालिका अभिव्यक्तियों (सीटीई) का उपयोग करके SQL सर्वर 2005 और इसके बाद के संस्करण में किया जा सकता है। यहाँ MSDN से पुनरावर्ती प्रश्नों का वर्णन करने वाला एक बढ़िया लिंक दिया गया है:सामान्य तालिका अभिव्यक्तियों का उपयोग करते हुए पुनरावर्ती प्रश्न

यहां एक उदाहरण दिया गया है:

यदि आप लोगों की एक पदानुक्रमित रेखा की कल्पना करते हैं, तो यह क्वेरी आपको किसी भी व्यक्ति की पूरी पंक्ति देखने देगी और पदानुक्रम में उनके स्थान की गणना करेगी। किसी भी बाल संबंध को खोजने के लिए इसे संशोधित किया जा सकता है।

उस व्यक्ति की आईडी के बजाय, आप उस पंक्ति की आईडी में अदला-बदली करते हैं जिसका उपयोग आप अपने माता-पिता के रूप में कर रहे हैं।

--Create table of dummy data
create table #person (
personID integer IDENTITY(1,1) NOT NULL,
name      varchar(255) not null,
dob       date,
father    integer
);

INSERT INTO #person(name,dob,father)Values('Pops','1900/1/1',NULL);  
INSERT INTO #person(name,dob,father)Values('Grandma','1903/2/4',null);
INSERT INTO #person(name,dob,father)Values('Dad','1925/4/2',1);
INSERT INTO #person(name,dob,father)Values('Uncle Kev','1927/3/3',1);
INSERT INTO #person(name,dob,father)Values('Cuz Dave','1953/7/8',4);
INSERT INTO #person(name,dob,father)Values('Billy','1954/8/1',3);

DECLARE @OldestPerson INT; 
SET @OldestPerson = 1; -- Set this value to the ID of the oldest person in the family

WITH PersonHierarchy (personID,Name,dob,father, HierarchyLevel) AS
(
   SELECT
      personID
      ,Name
      ,dob
      ,father,
      1 as HierarchyLevel
   FROM #person
   WHERE personID = @OldestPerson

   UNION ALL

   SELECT
    e.personID,
      e.Name,
      e.dob,
      e.father,
      eh.HierarchyLevel + 1 AS HierarchyLevel
   FROM #person e
      INNER JOIN PersonHierarchy eh ON
         e.father = eh.personID
)

SELECT *
FROM PersonHierarchy
ORDER BY HierarchyLevel, father;

DROP TABLE #person;



  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 सर्वर डेटाबेस में सिस्टम तालिकाओं की संख्या की गणना करने के 3 तरीके

  2. कई से कई संबंधों में सभी संबंधित रिकॉर्ड समूहित करें, SQL ग्राफ़ कनेक्टेड घटक

  3. MS SQL सर्वर अंतिम सम्मिलित आईडी

  4. SQL सर्वर में APPROX_COUNT_DISTINCT () कैसे काम करता है

  5. जॉइन और इनर जॉइन के बीच अंतर