sql >> Databáze >  >> RDS >> Sqlserver

Získejte členy rodiny

Řešení, které jsem našel, není vůbec dobré. Poskytuje správnou odpověď, ale je velmi pomalý, dokonce i pro tento velmi malý stůl.

 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. ORA-00942:Lze vybrat ze schema.table, ale ne z tabulky?

  2. Jaký význam má název indexu při vytváření indexu v MySQL?

  3. oracle jak transponovat sloupce do řádků bez UNION

  4. Jak nainstaluji klienta MySQL příkazového řádku na Mac?