基于上一个查询的结果,在Birt中使用Javascript执行新查询
我有一个BIRT报告,其中包含使用以下查询的数据集基于上一个查询的结果,在Birt中使用Javascript执行新查询,javascript,sql,postgresql,birt,recursive-query,Javascript,Sql,Postgresql,Birt,Recursive Query,我有一个BIRT报告,其中包含使用以下查询的数据集 select id, parentId from objectTable where id=? 查询中使用的id通过BIRT参数传入,根据得到的结果,我希望找到parentObject。执行上述查询后,我想检查parentObject是否存在,并通过检查上述查询中的parentId值来执行此操作,如果不为零,则存在父对象。所以我必须说 while (parentId > 0) select id, parentId from o
select id, parentId from objectTable where id=?
查询中使用的id通过BIRT参数传入,根据得到的结果,我希望找到parentObject。执行上述查询后,我想检查parentObject是否存在,并通过检查上述查询中的parentId值来执行此操作,如果不为零,则存在父对象。所以我必须说
while (parentId > 0)
select id, parentId from objectTable where id=parentId
然后我需要继续循环,直到parentId为零,我知道我有最伟大的祖先
有没有办法在数据集上使用Javascript来实现这一点?或者可能是一个嵌套的sql语句,它允许我执行类似的操作?a可以在单个查询中为您执行此操作:
WITH RECURSIVE cte AS (
SELECT id, parentid
FROM objecttable
WHERE id = ?
UNION ALL
SELECT o.id, o.parentid
FROM cte c
JOIN objecttable o ON o.id = c.parentid
WHERE c.parentid > 0
)
SELECT *
FROM cte
WHERE parent_id = 0;
到db服务器的单程往返通常要便宜得多。Closley相关案例: