Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Mendapatkan semua anak dari orang tua menggunakan kueri MSSQL

Dengan asumsi Anda ingin mendapatkan saudara dari nilai @p0 , Anda dapat menggunakan self-join sederhana:

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

Klausa tidak sama di sini memastikan Anda mendapatkan saudara kandung yang tidak menyertakan nilai yang Anda cari. Hapus jika perlu.

Contoh SQL Fiddle

Karena Anda menyebutkan rekursi, mungkin Anda menginginkan seluruh pohon mulai dari induk nilai @p0 . Dalam hal ini, Anda dapat menggunakan CTE rekursif:

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

Contoh SQL Fiddle menggunakan data Anda dandengan data tambahan untuk mendemonstrasikan CTE rekursif



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pengembangan Mesin Virtual Azure untuk Penggunaan SQL Server

  2. Buffer cache:Apa itu dan bagaimana pengaruhnya terhadap kinerja database?

  3. Cara Mengembalikan Daftar Acara Pemicu di SQL Server

  4. Apa perbedaan antara varchar dan nvarchar?

  5. Cara Memperbaiki Kesalahan "fungsi datediff mengakibatkan overflow" di SQL Server