标签: recursive-query

错误 - 使用CTE进行递归选择时,"UNION运算符必须具有相同数量的表达式"

这时我有一张tblLocation带有柱子的桌子ID, Location, PartOfID.

该表以递归方式连接到自身: PartOfID -> ID

我的目标是选择输出如下:

> France > Paris > AnyCity >
Run Code Online (Sandbox Code Playgroud)

说明:AnyCity位于巴黎,巴黎位于法国.

我到现在为止找到的解决方案是这样的:

; with q as (
select ID,Location,PartOf_LOC_id from tblLocatie t
where t.ID = 1 -- 1 represents an example
union all
select t.Location + '>' from tblLocation t
inner join q parent on parent.ID = t.LOC_PartOf_ID
)
select * from q
Run Code Online (Sandbox Code Playgroud)

不幸的是我收到以下错误:

使用UNION,INTERSECT或EXCEPT运算符组合的所有查询在其目标列表中必须具有相同数量的表达式.

如果您知道如何修复我的输出,那就太棒了.

sql t-sql sql-server recursive-query

17
推荐指数
1
解决办法
10万
查看次数

如何在文件夹中的xml文件中grep一个单词

我知道我可以使用grep在这样的文件夹中的所有文件中找到一个单词

grep -rn core .
Run Code Online (Sandbox Code Playgroud)

但我当前的目录有很多子目录,我只想搜索当前目录及其所有子目录中的所有xml文件.我怎样才能做到这一点 ?

我试过这个

grep -rn core *.xml // Does not work
Run Code Online (Sandbox Code Playgroud)

但它只搜索当前目录中的xml文件.它不会递归地执行.

regex linux grep recursive-query

16
推荐指数
1
解决办法
3万
查看次数

与Oracle的CONNECT BY等效的PostgreSQL语法是什么?START WITH?

Oracle中,如果我将表定义为...

CREATE TABLE taxonomy
    (
    key NUMBER(11) NOT NULL CONSTRAINT taxPkey PRIMARY KEY,
    value VARCHAR2(255),
    taxHier NUMBER(11)
    );
ALTER TABLE
    taxonomy
ADD CONSTRAINT
    taxTaxFkey
FOREIGN KEY
    (taxHier)
REFERENCES
    tax(key);
Run Code Online (Sandbox Code Playgroud)

有了这些价值......

key value   taxHier
0   zero    null
1   one     0
2   two     0
3   three   0
4   four    1
5   five    2
6   six     2
Run Code Online (Sandbox Code Playgroud)

这个查询语法......

SELECT
     value
FROM
    taxonomy
CONNECT BY
    PRIOR key = taxHier
START WITH
    key = 0;
Run Code Online (Sandbox Code Playgroud)

会屈服......

zero
one
four
two
five
six
three …
Run Code Online (Sandbox Code Playgroud)

sql oracle postgresql connect-by recursive-query

16
推荐指数
2
解决办法
3万
查看次数

递归JPA查询?

JPA 2是否有任何运行递归查询的机制?

这是我的情况:我有一个实体E,它包含一个整数字段x.它也可能有类型E的子节点,通过@OneToMany映射.我想做的是通过主键找到一个E,并获得它的x值以及它所有后代的x值.有没有办法在单个查询中执行此操作?

我正在使用Hibernate 3.5.3,但我不想对Hibernate API有任何明确的依赖.


编辑:根据这一项目,Hibernate并没有具备这个功能,或者至少是在三月份没有.所以JPA似乎不太可能拥有它,但我想确定一下.

java orm recursive-query jpql jpa-2.0

15
推荐指数
2
解决办法
2万
查看次数

SQL Server递归查询

我是SQL Server开发的新手.我的大部分经验都是通过Oracle完成的.

假设我有下表包含约会对象

CREATE TABLE [dbo].[Appointments](
    [AppointmentID] [int] IDENTITY(1,1) NOT NULL,
    .......
    [AppointmentDate] [datetime] NOT NULL,
    [PersonID] [int] NOT NULL,
    [PrevAppointmentID] [int] NULL,
 CONSTRAINT [PK_Appointments] PRIMARY KEY CLUSTERED ([AppointmentID] ASC)
Run Code Online (Sandbox Code Playgroud)

可以推迟约会,因此,当发生这种情况时,会在表上创建一个新行,其中PrevAppointmentID字段包含原始约会的ID.

我想查询以获取人员约会的历史记录.例如,如果ID = 1的任命被推迟两次,并且这些延期已创建ID为= 7且ID = 12的约会,则我希望进行一个返回以下结果的查询:

AppointmentID         PrevAppointmentID
-----------------    ----------------------
1                     NULL
7                     1
12                    7
Run Code Online (Sandbox Code Playgroud)

如果使用Oracle,我记得可以使用CONNECT BY PRIOR子句获得类似的东西.

有没有办法进行查询以实现这些结果?

我正在使用SQL Server 2005/2008.

提前致谢

sql-server sql-server-2005 recursive-query sql-server-2008

15
推荐指数
1
解决办法
1万
查看次数

分层SQL数据(递归CTE与HierarchyID与闭包表)

我在SQL Server数据库中使用了一组分层数据.数据以guid作为主键存储,而parentGuid作为指向直接父对象的外键存储.我最常通过WebApi项目中的Entity Framework访问数据.为了使情况更复杂,我还需要基于此层次结构管理权限,以便应用于父级的权限适用于其所有后代.我的问题是:

我已经搜遍了所有,无法决定哪种方法最适合处理这种情况.我知道我有以下选择.

  1. 我可以创建Recursive CTEsCommon Table Expression(也就是RCTE)来处理分层数据.这似乎是正常访问最简单的方法,但我担心在用于确定子对象的权限级别时可能会很慢.
  2. 我可以创建一个hierarchyId表中,并使用SQL Server所提供的功能,如数据类型字段GetAncestor(),IsDescendantOf()和等,这似乎将让查询很容易,但似乎需要一个相当复杂的插入/更新触发器,以保持HIERARCHYID域是正确的通过插入和移动
  3. 我可以创建一个closure table,它将存储表中的所有关系.我想象如下:父列和子列,每个父 - >子关系将被表示.(即1-> 2 2-> 3将在数据库中表示为1-2,1-3,2-3).缺点是这需要插入,更新和删除触发器,即使它们非常简单,并且此方法会生成大量记录.

我已经尝试过全面搜索,但在这三种方法之间找不到任何建议.

PS我也对这个问题的任何替代解决方案持开放态度

sql-server recursive-query common-table-expression hierarchyid transitive-closure-table

15
推荐指数
1
解决办法
7197
查看次数

如何使用递归查询向后遍历分层树结构结构

我使用PostgreSQL 9.1来查询分层树结构数据,包括与节点连接的边(或元素).数据实际上是用于流网络,但我已经将问题抽象为简单的数据类型.考虑示例tree表.每条边都有长度和面积属性,用于确定网络中的一些有用指标.

CREATE TEMP TABLE tree (
  edge text PRIMARY KEY,
  from_node integer UNIQUE NOT NULL, -- can also act as PK
  to_node integer REFERENCES tree (from_node),
  mode character varying(5), -- redundant, but illustrative
  length numeric NOT NULL,
  area numeric NOT NULL,
  fwd_path text[], -- optional ordered sequence, useful for debugging
  fwd_search_depth integer,
  fwd_length numeric,
  rev_path text[], -- optional unordered set, useful for debugging
  rev_search_depth integer,
  rev_length numeric,
  rev_area numeric
);
CREATE INDEX ON tree (to_node);
INSERT INTO …
Run Code Online (Sandbox Code Playgroud)

postgresql recursive-query common-table-expression hierarchical-query transitive-closure-table

15
推荐指数
1
解决办法
6095
查看次数

PostgreSQL具有RECURSIVE性能

我有一个简单的问题.不知怎的,我无法找到明确的答案.

有多少是WITH RECURSIVE语法PostgreSQL的优化?我的意思是:它仅仅是一系列非递归查询的语法糖,或者它是一个单一的语句,尽管其复杂的语义已经作为一个整体进行了优化.一个后续问题 - 关于优化这种语法的可能性有多大?当然,非常欢迎有关此事的一些具体数据.

database postgresql recursive-query with-statement

14
推荐指数
2
解决办法
9097
查看次数

Oracle SQL Analytic查询 - 递归电子表格式运行总计

我有以下数据,由AMM(按月)排序.

BGREATEST(current value of A + previous value of B, 0)以类似电子表格的方式计算.

如何B使用SQL查询进行计算?

我使用的是Oracle 10g,因此我无法使用递归查询.


这是我的测试数据:

MM         | A      | B
-----------+--------+------
2012-01-01 |    800 |  800
2012-02-01 |   1900 | 2700
2012-03-01 |   1750 | 4450
2012-04-01 | -20000 |    0
2012-05-01 |    900 |  900
2012-06-01 |   3900 | 4800
2012-07-01 |  -2600 | 2200
2012-08-01 |  -2600 |    0
2012-09-01 | …
Run Code Online (Sandbox Code Playgroud)

sql oracle running-total recursive-query analytic-functions

13
推荐指数
2
解决办法
1万
查看次数

树结构和递归

使用PostgreSQL 8.4.14数据库,我有一个表格树结构的表,如下例所示:

CREATE TABLE unit (
    id bigint NOT NULL PRIMARY KEY,
    name varchar(64) NOT NULL,
    parent_id bigint,
    FOREIGN KEY (parent_id) REFERENCES unit (id)
);
INSERT INTO unit VALUES (1, 'parent', NULL), (2, 'child', 1)
                      , (3, 'grandchild A', 2), (4, 'grandchild B', 2);
Run Code Online (Sandbox Code Playgroud)
 id |    name      | parent_id 
----+--------------+-----------
  1 | parent       |          
  2 | child        |         1
  3 | grandchild A |         2
  4 | grandchild B |         2
Run Code Online (Sandbox Code Playgroud)

我想为这些单元创建一个访问控制列表,其中每个单元可能拥有自己的ACL,或者从具有自己的ACL的最近的祖先继承它.

CREATE TABLE acl (
    unit_id bigint NOT NULL …
Run Code Online (Sandbox Code Playgroud)

sql postgresql tree recursive-query common-table-expression

13
推荐指数
1
解决办法
6820
查看次数