Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

CTE để nhận tất cả các con (con cháu) của một phụ huynh

Điều này nên làm điều đó:

WITH MyTest as
(
  SELECT P.ProductID, P.ParentID, CAST(P.ProductID AS VarChar(Max)) as Level
  FROM Products P
  WHERE P.ParentID = 0

  UNION ALL

  SELECT P1.ProductID, P1.ParentID, CAST(P1.ProductID AS VarChar(Max)) + ', ' + M.Level
  FROM Products P1  
  INNER JOIN MyTest M
  ON M.ProductID = P1.ParentID
 )
SELECT * From MyTest

Và đây là SQL Fiddle được cập nhật.

Ngoài ra, hãy xem liên kết này để được trợ giúp với các CTE ... Chúng chắc chắn rất tốt khi biết:

Hy vọng điều này sẽ thành công!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sử dụng SQL Server làm hàng đợi DB với nhiều máy khách

  2. Lưu byte [] vào cơ sở dữ liệu SQL Server từ C #

  3. Thay đổi ngôn ngữ cho phiên hiện tại trong SQL Server

  4. Luồng có điều kiện của máy chủ SQL

  5. Làm cách nào để kiểm tra xem một chuỗi có phải là mã định danh duy nhất hay không?