Đây là một tập lệnh ví dụ sử dụng biểu thức bảng phổ biến:
with recursive sumthis(id, val) as (
select id, value
from example
where id = :selectedid
union all
select C.id, C.value
from sumthis P
inner join example C on P.id = C.parentid
)
select sum(val) from sumthis
Tập lệnh trên tạo một bảng 'ảo' được gọi là sumthis
có các cột id
và val
. Nó được định nghĩa là kết quả của hai lựa chọn được hợp nhất với union all
.
Đầu tiên select
lấy gốc (where id = :selectedid
).
select
thứ hai theo dõi lặp đi lặp lại phần con của các kết quả trước đó cho đến khi không có gì để trả về.
Kết quả cuối cùng sau đó có thể được xử lý như một bảng bình thường. Trong trường hợp này, cột val được tính bằng tổng.