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

Tìm tất cả các nút trong mô hình danh sách kề với oracle kết nối bằng

Cuối cùng tôi đã nghĩ ra một giải pháp tương tự như thế này:

  SELECT child FROM child_parent START WITH parent =
   (
    SELECT DISTINCT parent FROM   
     (
      SELECT parent
      FROM child_parent
      WHERE CONNECT_BY_ISLEAF = 1
        START WITH child = 5
        CONNECT BY PRIOR parent = child
      UNION
      SELECT parent
      FROM child_parent
      WHERE parent = 5
     ) 
   )
   CONNECT BY NOCYCLE PRIOR child = parent
   UNION
   SELECT DISTINCT parent FROM   
   (
    SELECT parent
    FROM child_parent
    WHERE CONNECT_BY_ISLEAF = 1
      START WITH child = 5
      CONNECT BY PRIOR parent = child
    UNION
    SELECT parent
    FROM child_parent
    WHERE parent = 5
   );

Nó hoạt động với tất cả các nút trong ví dụ đã cung cấp, nhưng nếu một trong các lá có nút cha thứ hai và điểm bắt đầu nằm trên nút này hoặc trong một nhánh khác thì nó không hoạt động.

Nhưng đối với tôi như vậy là đủ tốt rồi.

Một giải pháp để có được tất cả các nút trong biểu đồ có thể là:thực hiện ngược lại với truy vấn ở trên (từ trên xuống dưới) và sau đó thực thi chúng (từ dưới lên trên, từ trên xuống dưới) ngược lại cho đến khi bạn không tìm thấy thêm các nút mới. PL / SQL và tôi cũng không biết về hiệu suất.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hàm TO_CHAR (số) trong Oracle

  2. oracle sql không phải là một nhóm theo biểu thức trong khi đếm

  3. Trả lại tên ngày ngắn từ một ngày trong Oracle

  4. Hiển thị các giá trị được nối trong Truy vấn SQL

  5. oracle EBS R12 là gì