标签: recursive-query

scala中的递归XML

我试图用scala解析这个文件:

<?xml version="1.0"?>
<model>
    <joint name="pelvis">
            <joint name="lleg">
                    <joint name="lfoot"/>
            </joint>
            <joint name="rleg">
                    <joint name="rfoot"/>
            </joint>
    </joint>
</model>
Run Code Online (Sandbox Code Playgroud)

我想用它为我的2D动画引擎创建一个骨架.应将每个关节制成相应的对象,并将所有儿童加入其中.

所以这部分应该产生类似于这样的结果:

j = new Joint("pelvis")
lleg = new Joint("lleg")
lfoot = new Joint("lfoot")
rleg = new Joint("rleg")
rfoot = new Joint("rfoot")
lleg.addJoint(lfoot)
rleg.addJoint(rfoot)
j.addJoint(lleg)
j.addJoint(rleg)
Run Code Online (Sandbox Code Playgroud)

但是,我无法浏览xml代码.首先,我不确定我是否完全理解语法 xml \\ "joint",这似乎产生了包含所有标签的NodeSeq.


主要问题:

  1. 在scala中使用xml理解语法的问题,即 xml \\ "...", Elem.child?,
  2. 从父节点获取属性而不从所有子节点获取属性的问题(xml \\ "@attribute"生成所有属性的连接..?)

xml scala recursive-query

7
推荐指数
1
解决办法
1285
查看次数

如何在SQLAlchemy ORM中动态调整递归加载的递归深度?

我有一个两表分层设置,其中表A引用表B,然后引用表A中的不同记录,依此类推......但仅限于给定的递归深度.

我使用SQLAlchemy和声明性工作得很好.我也成功地使用表格关系lazyjoin_depth属性的热切加载.这是根据SQLAlchemy文档.

但是,这种安排将递归深度固定在' join_depth'程序加载时间一次......但是对于我正在使用的数据,我知道每次应该使用的递归深度. 如何更改基于每个查询的递归深度?

我考虑过摆弄join_depth基础ORM对象上的master 属性,但这不起作用,因为我有一个多线程的scoped_session应用程序,这将是危险的(更不用说参数很难到在运行时位于SQLAlchemy内!).

我也看过使用joinedload查询,但没有看到如何改变深度.

我也知道WITH RECURSIVE通过CTE在一些数据库中提供的' 'SQL语法,但是尽管如此,我想暂时避免这种情况,因为一些数据库仍然不支持它(SQLAlchemy也没有 - 至少不是现在而且没有很多方言定制).

python sqlalchemy recursive-query adjacency-list

7
推荐指数
1
解决办法
1272
查看次数

SQL递归查询

我有一个表类别,

1)Id
2)CategoryName
3)CategoryMaster

数据为:

1计算机0
2软件1
3多媒体1
4动画3
5健康0
6 Healthsub 5

我创建了递归查询:

 ;WITH CategoryTree AS
 (
  SELECT *, CAST(NULL AS VARCHAR(50)) AS ParentName, 0 AS Generation    
  FROM dbo.Category    
  WHERE CategoryName = 'Computers'

  UNION ALL        

  SELECT Cat.*,CategoryTree.CategoryName AS ParentName, Generation + 1    
  FROM dbo.Category AS Cat  INNER JOIN 
  CategoryTree ON Cat.CategoryMaster = CategoryTree.Id
 )

 SELECT * FROM CategoryTree
Run Code Online (Sandbox Code Playgroud)

我得到父类别的结果到底部,就像我得到计算机的所有子类别

但我希望从动画到计算机的自下而上的结果,请一些人建议我正确的方向.

先感谢您 :)

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

7
推荐指数
1
解决办法
1675
查看次数

使用递归公用表表达式从两个表中查找连续的no.s

我有以下表格:

Actual         Optional
------         --------
4                 3
13                6
20                7
26                14
                  19
                  21
                  27
                  28
Run Code Online (Sandbox Code Playgroud)

我要做的是选择:

1)"实际"表中的所有值.

2)如果它们形成具有"实际"表值的连续系列,则从"可选"表中选择值

预期的结果是:

Answer
------
4
13
20
26
3    --because it is consecutive to 4 (i.e 3=4-1) 
14   --14=13+1
19   --19=20-1
21   --21=20+1
27   --27=26+1
28   --this is the important case.28 is not consecutive to 26 but 27 
     --is consecutive to 26 and 26,27,28 together form a series.
Run Code Online (Sandbox Code Playgroud)

我使用递归cte编写了一个查询但是它永远循环并且在递归达到100级后失败.我遇到的问题是27场比赛26场比赛,27场比赛27场比赛27场比赛27场比赛28场比赛27场比赛......(永远)

这是我写的查询:

with recurcte as
        (
        select num as one,num as two from …
Run Code Online (Sandbox Code Playgroud)

sql sql-server recursive-query common-table-expression sql-server-2008

7
推荐指数
1
解决办法
617
查看次数

Oracle Connect By Prior用于递归查询语法

假设我的oracle DB中有以下表:

ID:    Name:     Parent_ID:
123    a         234
345    b         123
234    c         234
456    d         345
567    e         567
678    f         567
Run Code Online (Sandbox Code Playgroud)

而我想要做的是找到每ID一个ULTIMATE parent ID(描述为行,当你上升时,递归地,基于Parent_ID你最终得到的那一行ID = Parent_ID).

所以,例如,345的父母是123,123的父母是234,234的父母是234(意味着它是链的顶端),因此345的最终父母是234 - 我希望这是有道理的...

所以,我的结果应如下所示:

ID:    Name:     Ult_Parent_ID:    Ult_Parent_Name:
123    a         234               c
345    b         234               c
234    c         234               c
456    d         234               c
567    e         567               e
678    f         567               e
Run Code Online (Sandbox Code Playgroud)

Connect By今天刚刚发现了有关Oracle 语句的内容,所以这对我来说是全新的,但我想我的查询必须看起来像SOMETHING如下:

SELECT ID, Name, Parent_ID as Ult_Parent_ID, 
   (SELECT …
Run Code Online (Sandbox Code Playgroud)

sql database oracle plsql recursive-query

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

如何使用SQL获取整个链接组详细信息?

在数据库中有一个名为"MYGROUP"的表.我在GUI中以树格式显示此表数据,如下所示:

Vishal Group
|
|-------Vishal Group1
|          |-------Vishal Group1.1
|                     |-------Vishal Group1.1.1
|
|-------Vishal Group2
|          |-------Vishal Group2.1
|                     |-------Vishal Group2.1.1
|
|-------Vishal Group3
|   
|-------Vishal Group4
|          |-------Vishal Group4.1
Run Code Online (Sandbox Code Playgroud)

实际上,要求是,我需要访问每个组的最低根,如果相应的组没有在其他特定表中使用,那么我将从相应的表中删除该记录.

我需要获取仅名为"Vishal Group"的主要组的所有详细信息,请参阅两个快照,一个包含整个表数据,另一个快照(具有树格式详细信息的快照)显示预期数据,即我只需要获取这些记录是SQL执行的结果.

我尝试了自我加入(通常我们为MGR和员工列关系做),但没有成功获得属于所有记录基础的"Vishal Group"下的记录.

我添加了一个表DDL和Insert SQL供参考,如下所示.还附上了数据在表格中的外观.

CREATE TABLE MYGROUP 
(
  PK_GROUP GUID DEFAULT 'newid()' NOT NULL,
  DESCRIPTION Varchar(255),
  LINKED_TO_GROUP GUID,
  PRIMARY KEY (PK_GROUP)
);

COMMIT;


INSERT INTO MYGROUP (PK_GROUP, DESCRIPTION, LINKED_TO_GROUP) VALUES ('{11111111-111-1111-1111-111111111111} ', 'My Items', NULL);


INSERT INTO MYGROUP (PK_GROUP, DESCRIPTION, LINKED_TO_GROUP) VALUES ('{CD1E33D1-1666-49B9-83BE-067687E4DDD6}', 'Vishal Group', '{11111111-111-1111-1111-111111111111}');

INSERT …
Run Code Online (Sandbox Code Playgroud)

sql firebird recursive-query common-table-expression firebird2.5

7
推荐指数
1
解决办法
139
查看次数

创建一个在Teradata中具有"with recursive"语句的递归视图

我想CREATE RECURSIVE VIEW从以下可重现的示例中在Teradata中创建一个递归视图(即):

CREATE VOLATILE TABLE vt1
(
    foo VARCHAR(10)
    , counter INTEGER
    , bar INTEGER
)
ON COMMIT PRESERVE ROWS;

INSERT INTO vt1 VALUES ('a', 1, '1');
INSERT INTO vt1 VALUES ('a', 2, '2');
INSERT INTO vt1 VALUES ('a', 3, '2');
INSERT INTO vt1 VALUES ('a', 4, '4');
INSERT INTO vt1 VALUES ('a', 5, '1');
INSERT INTO vt1 VALUES ('b', 1, '3');
INSERT INTO vt1 VALUES ('b', 2, '1');
INSERT INTO vt1 VALUES ('b', 3, '1');
INSERT …
Run Code Online (Sandbox Code Playgroud)

sql recursion view recursive-query teradata

7
推荐指数
1
解决办法
2127
查看次数

Laravel 返回所有后代的 id

如何返回AllSubSections(所有级别)的所有 ID

class Section extends Model
{
    public function Ads()
    {
        return $this->hasMany(Ad::class);
    }

    public function AllSubSections()
    {
        return $this->SubSections()->with('AllSubSections');
    }

    public function SubSections()
    {
        return $this->hasMany(Section::class);
    }

    public function Parent()
    {
        return $this->belongsTo(Section::class);
    }
}
Run Code Online (Sandbox Code Playgroud)

我目前正在做的是:

$section = Section::where('name', 'Properties')->first();
$subSections = $section->AllSubSections;
$subSections->pluck('id')
Run Code Online (Sandbox Code Playgroud)

但它只返回第一级而不是所有级别。

php recursive-query laravel laravel-5.3

7
推荐指数
1
解决办法
2442
查看次数

MySQL Recursive从父级获取所有子级

我有这种情况使用Mysql上的递归查询在一个表上找到lv 2和lv3子...
我正在使用的数据库结构:

id name parent
1    A    0
2    B    0
3    C    0
4    D    1
5    E    1
6    F    2
7    G    2
8    H    3
9    I    3
10   J    4
11   K    4
Run Code Online (Sandbox Code Playgroud)

我期望的结果,当过滤数据时,id = 1,它将产生我期待的结果.

id name parent
4   D     1
5   E     1
10  J     4
11  K     4
Run Code Online (Sandbox Code Playgroud)

或者这就是例证. 插图

我一直在寻找各地,并阅读这个http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/,但我没有找到我正在寻找的结果..
任何帮助将不胜感激, 谢谢

mysql hierarchy recursive-query hierarchical-data

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

Oracle 11查询在前2次执行时运行速度很快,后续执行速度较慢,没有计划更改

Oracle Database 11g 11.2.0.4.0版 - 64位生产

解决:是由基数反馈引起的.我以为我早些时候已经测试过它并将其消除,但显然是错了.

添加此查询:

select --+ opt_param('_optimizer_use_feedback' 'false')
Run Code Online (Sandbox Code Playgroud)

现在一直很快.


我有这种奇怪的情况,在前两次执行中查询似乎运行得相当快,然后在后续执行时慢得多.我使用带有"set autotrace on"的sqlplus来获取查询计划,并且对于每次运行,计划是相同的(相同的行估计等).最后的autotrace统计信息表明在后续执行中会读取更多数据.

如果我在语法上更改查询(只需添加或删除注释),那么它可能是SQL缓存的新内容,然后它会快速运行两次,然后再慢慢运行.如果我将其更改回我之前使用的查询版本(因此在缓存中),那么它总是很慢.

我不认为它与基数反馈有关,因为:

  • 我试过禁用此功能但没有效果
  • 所有处决的计划都是一样的

那我下一步该看哪儿?我可以用什么工具来缩小发生这种情况的原因?

这是我正在测试的查询:

set timing on
set autotrace on

select distinct
      cc2.circuit_id as circuit_id
    , cc2.circuit_component_id as component_circuit_id
from bsdb.bs_instance si
join bsdb.bs_location_schedule ls
    on ls.bs_instance_id = si.id
    and coalesce(ls.terminated_date, sysdate) >= sysdate
join npc.npc_customer_service cs
    on cs.bs_location_schedule_id = ls.id
    and cs.circuit_status_id in (1, 2, 6)
join tdb.loc_site_code lsc
    on lsc.id = ls.site_code_id
left outer join scdb.brand br
    on …
Run Code Online (Sandbox Code Playgroud)

oracle recursive-query oracle11g

7
推荐指数
1
解决办法
289
查看次数