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

oracle kết nối bởi nhiều phụ huynh

Chà, vấn đề của bạn dường như là bạn đang sử dụng một thiết kế bảng không chuẩn hóa. Nếu một ID nhất định luôn có cùng một ParentID , mối quan hệ đó không nên được chỉ định riêng biệt trong tất cả các hàng này.

Thiết kế tốt hơn sẽ là có một bảng duy nhất hiển thị các mối quan hệ con chính, với ID làm khóa chính và bảng thứ hai hiển thị ánh xạ của ID thành ObjectID , trong đó tôi cho rằng cả hai cột cùng nhau sẽ bao gồm khóa chính. Sau đó, bạn sẽ áp dụng truy vấn phân cấp của mình với bảng đầu tiên và nối kết quả của nó với bảng khác để lấy các đối tượng có liên quan cho mỗi hàng.

Bạn có thể mô phỏng điều này với cấu trúc bảng hiện tại của mình ...

with parent_child as (select distinct id, parent_id from table),
     tree as (select id, parent_id from parent_child
               start with parent_id = 0
               connect by prior id = parent_id )
select id, table.parent_id, table.object_id
  from tree join table using (id)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. UID - Trả lại ID của Phiên hiện tại trong Oracle

  2. chúng ta có thể đặt tên cho một ràng buộc mặc định trong oracle không

  3. Sử dụng như '%' và so khớp các giá trị NULL với NUMBER cột

  4. Nhận tập kết quả từ quy trình lưu trữ oracle

  5. Bỏ qua thông số phạm vi ngày trong mệnh đề where khi thông số không được nhập