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

परिवार के सदस्यों को प्राप्त करें

मुझे जो समाधान मिला वह बिल्कुल अच्छा नहीं है। यह सही उत्तर देता है लेकिन इस बहुत छोटी तालिका के लिए भी बहुत धीमा है।

 DECLARE @INCLUIDOS TABLE (ID INT)

 INSERT INTO @INCLUIDOS VALUES(1)

 DECLARE @PAST_QUANT INT = 0
 DECLARE @QUANT INT = 1 

 WHILE @QUANT <> @PAST_QUANT
 BEGIN

     SET @PAST_QUANT = @QUANT

     INSERT INTO @INCLUIDOS
        SELECT PARENT 
        FROM PERSONCONN 
        WHERE CHILD IN (SELECT ID FROM @INCLUIDOS)
            AND PARENT NOT IN (SELECT ID FROM @INCLUIDOS)

    INSERT INTO @INCLUIDOS
        SELECT CHILD
        FROM PERSONCONN
        WHERE PARENT IN (SELECT ID FROM @INCLUIDOS)
            AND CHILD NOT IN (SELECT ID FROM @INCLUIDOS)

    SET @QUANT = (SELECT COUNT(*) FROM @INCLUIDOS)

END

SELECT DISTINCT ID FROM @INCLUIDOS

SQL Fiddle



  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. टीएसक्यूएल:तालिका में स्ट्रिंग का नेस्टेड स्प्लिट/पार्स (एकाधिक समेकित टैग:एक स्ट्रिंग में मान)

  3. संख्या मान में डेटाटाइप और अधिकतम लंबाई के साथ SQL तालिका स्तंभ स्कीमा प्राप्त करें

  4. एक अदिश चर में SQL सर्वर आउटपुट क्लॉज

  5. SQL सर्वर 2008 और यूनिकोड कैरेक्टर तुलना