我试图用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.
主要问题:
xml \\ "...", Elem.child?,xml \\ "@attribute"生成所有属性的连接..?)我有一个两表分层设置,其中表A引用表B,然后引用表A中的不同记录,依此类推......但仅限于给定的递归深度.
我使用SQLAlchemy和声明性工作得很好.我也成功地使用表格关系lazy和join_depth属性的热切加载.这是根据SQLAlchemy文档.
但是,这种安排将递归深度固定在' join_depth'程序加载时间一次......但是对于我正在使用的数据,我知道每次应该使用的递归深度. 如何更改基于每个查询的递归深度?
我考虑过摆弄join_depth基础ORM对象上的master 属性,但这不起作用,因为我有一个多线程的scoped_session应用程序,这将是危险的(更不用说参数很难到在运行时位于SQLAlchemy内!).
我也看过使用joinedload查询,但没有看到如何改变深度.
我也知道WITH RECURSIVE通过CTE在一些数据库中提供的' 'SQL语法,但是尽管如此,我想暂时避免这种情况,因为一些数据库仍然不支持它(SQLAlchemy也没有 - 至少不是现在而且没有很多方言定制).
我有一个表类别,
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)
我得到父类别的结果到底部,就像我得到计算机的所有子类别
但我希望从动画到计算机的自下而上的结果,请一些人建议我正确的方向.
先感谢您 :)
我有以下表格:
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
假设我的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) 在数据库中有一个名为"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
我想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) 如何返回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)
但它只返回第一级而不是所有级别。
我有这种情况使用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/,但我没有找到我正在寻找的结果..
任何帮助将不胜感激, 谢谢
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) recursive-query ×10
sql ×5
oracle ×2
sql-server ×2
database ×1
firebird ×1
firebird2.5 ×1
hierarchy ×1
laravel ×1
laravel-5.3 ×1
mysql ×1
oracle11g ×1
php ×1
plsql ×1
python ×1
recursion ×1
scala ×1
sqlalchemy ×1
teradata ×1
view ×1
xml ×1