Tôi đã có một trí nhớ khủng khiếp. Bất cứ khi nào tôi thực hiện truy vấn CONNECT BY trong Oracle - và tôi có nghĩa là mỗi thời gian - Tôi phải suy nghĩ kỹ và thường xuyên thông qua thử nghiệm và lỗi xảy ra trên đối số mà PRIOR sẽ đi.Làm thế nào để tôi nhớ cách nào vòng PRIOR nên đi trong CONNECT BY truy vấn
Tôi không biết tại sao tôi không nhớ - nhưng tôi thì không.
Có ai có thói quen nhớ nhớ tiện dụng để tôi luôn nhớ không?
Ví dụ:
Để đi xuống một cây từ một nút - rõ ràng là tôi phải bất lực nhìn này lên :) - bạn làm điều gì đó như:
select
*
from
node
connect by
prior node_id = parent_node_id
start with
node_id = 1
Vì vậy, - tôi bắt đầu với một node_id
của 1 (phía trên cùng của nhánh) và truy vấn tìm kiếm tất cả các nút trong đó parent_node_id
= 1 và sau đó lặp lại xuống dưới cùng của cây.
Để đi lên cây trước khi đi vào phụ huynh:
select
*
from
node
connect by
node_id = prior parent_node_id
start with
node_id = 10
Vì vậy, bắt đầu từ đâu đó xuống một chi nhánh (node_id = 10
trong trường hợp này) Oracle đầu tiên được tất cả các nút nơi parent_node_id
là giống như một mà node_id
là 10.
EDIT: tôi vẫn nhận sai này để nghĩ rằng tôi muốn thêm một chỉnh sửa làm rõ để mở rộng trên answ chấp nhận er - Đây là cách tôi nhớ nó bây giờ:
select
*
from
node
connect by
prior node_id = parent_node_id
start with
node_id = 1
Các 'ngôn ngữ tiếng Anh' phiên bản của SQL này bây giờ tôi đọc như ...
trong nút, bắt đầu với hàng trong mà
node_id = 1
, hàng tiếp theo được chọn cóparent_node_id
bằngnode_id
từ hàng trước đó (trước đó).
EDIT: Quassnoi làm cho một điểm tuyệt vời - theo thứ tự bạn viết SQL làm cho mọi thứ dễ dàng hơn nhiều.
select
*
from
node
start with
node_id = 1
connect by
parent_node_id = prior node_id
này cảm thấy rõ ràng hơn rất nhiều với tôi - "bắt đầu với" mang đến cho hàng đầu tiên được lựa chọn và "kết nối bằng" cung cấp cho các hàng tiếp theo (s) - trong trường hợp này con cái node_id = 1.
Tôi thích "Luôn đặt TRƯỚC ở phần bên phải của biểu thức" - nó giúp bạn dễ dàng hơn. Cũng đặt "bắt đầu với" ngay từ đầu. –