sql >> Database teknologi >  >> RDS >> Sqlserver

Få familiemedlemmer

Den løsning, jeg fandt, er slet ikke god. Det giver det rigtige svar, men er meget langsomt, selv for denne meget lille tabel.

 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. Databasedesign - nullbare felter

  2. Django:dubletnøgleværdi overtræder unik begrænsning

  3. Hvordan skriver jeg en simpel valgforespørgsel i stedet for at bruge visninger?

  4. SQL Statement Help - Vælg seneste ordre for hver kunde