Tôi có một bảng:Làm thế nào để tự JOIN đệ quy trong SQL?
Series ======== ID SeriesName ParentSeriesID
Một loạt có thể là một "gốc" series, (ParentSeriesID
là 0 hoặc null) hoặc nó có thể có một phụ huynh. Một chuỗi cũng có thể là một vài cấp độ xuống, tức là Cha mẹ của nó có Phụ huynh, có Phụ huynh, v.v.
Làm cách nào để truy vấn bảng lấy Series bằng ID của nó và TẤT CẢ chuỗi hậu duệ '?
Cho đến nay tôi đã cố gắng:
SELECT child.*
FROM Series parent JOIN Series child ON child.ParentSeriesID = parent.ID
WHERE parent.ID = @ParentID
Nhưng điều này chỉ trả về cấp độ đầu tiên của trẻ em, tôi muốn nút phụ huynh, và tất cả các nút "hạ lưu". Tôi không chắc chắn làm thế nào để tiến bộ từ đây.
Tôi đã sửa đổi truy vấn của bạn để làm cho nó hoạt động, đặt nó trong chỉnh sửa của tôi cho câu hỏi của bạn. Cảm ơn bạn đã giúp đỡ! –
Bất kỳ cách nào để làm điều này trên một máy chủ db sql không MS? Tôi cần một cách tiêu chuẩn hơn mà không cần sử dụng CTE. –
@goku_da_master - Tùy thuộc vào ý của bạn. Cùng một mã sẽ hoạt động tốt trên Postgres, Oracle và DB2. Các biểu thức bảng chung là một phần của đặc tả SQL và do đó được thực hiện bởi nhiều nhà cung cấp. Tuy nhiên, có vẻ như bạn đang yêu cầu làm thế nào để đạt được cùng trên một cơ sở dữ liệu không hỗ trợ CTE như MySQL hoặc MS Access. Câu trả lời sẽ tùy thuộc vào sản phẩm. – Thomas