CTE SQL到JPA的简单子集查询 [英] cte sql to simple subset query for JPA

查看:127
本文介绍了CTE SQL到JPA的简单子集查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何将以下CTE查询(递归)更改为简单的子集sql:

How can we change below CTE query (recursive) to simple subset sql:

  WITH links (parent, child) AS
  ( SELECT parent, child
        FROM Heirarchy_Table
        WHERE parent = '111111'
   UNION ALL 
    SELECT ht.parent, ht.child
        FROM Heirarchy_Table ht
        INNER JOIN links ON links.child = ht.parent)
SELECT * FROM links fl;

我需要对JPA使用此查询,因为JPA不处理"WITH"子句.[注意:"links" cte是递归使用的].非常感谢!

I need to use this query for JPA as JPA is not handling "WITH" clause. [Note: "links" cte is used recursively]. Many Thanks!!

推荐答案

如何将以下CTE查询(递归)更改为简单的子集sql:

How can we change below CTE query (recursive) to simple subset sql:

创建视图.

create view links
as
WITH links (parent, child) AS
( SELECT parent, child
    FROM Heirarchy_Table
    WHERE parent = '111111'
UNION ALL 
SELECT ht.parent, ht.child
    FROM Heirarchy_Table ht
    INNER JOIN links ON links.child = ht.parent)
SELECT * FROM links fl;

然后您可以查询视图

select * from links

或者您可以使用内联表值函数,有时称为参数化视图",如下所示:

Or you can use an inline table-valued function, sometimes called a "parameratized view", like this:

create or alter function GetLinks(@parent int)
returns table
as 
return
WITH links (parent, child) AS
(SELECT parent, child
    FROM Heirarchy_Table
    WHERE parent = @parent
UNION ALL 
SELECT ht.parent, ht.child
    FROM Heirarchy_Table ht
    INNER JOIN links ON links.child = ht.parent)
SELECT * FROM links fl;

您可以通过以下方式查询:

which you can query like:

select * from GetLinks(1111)

这篇关于CTE SQL到JPA的简单子集查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆