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

Få alle børn af en forælder ved hjælp af MSSQL-forespørgsel

Forudsat at du ønsker at få søskende af værdien @p0 , kan du bruge en simpel selv-deltagelse:

SELECT p.Child
FROM Table1 c
INNER JOIN Table1 p ON c.Parent = p.Parent
WHERE c.Child = @p0
AND p.Child <> @p0

Ikke-lige klausulen her sørger for, at du får søskende uden den værdi, du søgte efter. Fjern det efter behov.

SQL Fiddle-eksempel

Men eftersom du nævner rekursion, vil du måske have hele træet startende ved overordnet af værdien @p0 . I så fald kan du bruge en rekursiv CTE:

WITH parent AS (
    SELECT Parent
    FROM Table1
    WHERE Child = @p0
), tree AS (
    SELECT x.Parent, x.Child
    FROM Table1 x
    INNER JOIN parent ON x.Parent = parent.Parent
    UNION ALL
    SELECT y.Parent, y.Child
    FROM Table1 y
    INNER JOIN tree t ON y.Parent = t.Child
)
SELECT Parent, Child
FROM tree

SQL Fiddle eksempler brug af dine data ogmed yderligere data for at demonstrere den rekursive CTE



  1. Værktøj, der konverterer mySQL-forespørgsel til Zend FrameWork-forespørgsel

  2. Hvordan kan jeg hente en liste over parametre fra en lagret procedure i SQL Server

  3. Testdrevet udvikling for at kontrollere databaseforespørgsler involverede metoder

  4. Runtime advarsel i django