Sql 获取一个id的所有家长
我提出了一个请求,应该返回所有的Sql 获取一个id的所有家长,sql,oracle,Sql,Oracle,我提出了一个请求,应该返回所有的ids和那些家长的ids,直到树的最高处,如下所示: SELECT co.id from t_factory co start with co.id in (21,36) CONNECT BY PRIOR co.id = co.id_parent 因此,这里,in()中的值是以编程方式应用的(这没有问题) 父项位于列id\u parent中,例如,我有一行: id id_parent ----------- 36 20 20 31 31
id
s和那些家长的id
s,直到树的最高处,如下所示:
SELECT co.id
from t_factory co
start with co.id in (21,36)
CONNECT BY PRIOR co.id = co.id_parent
因此,这里,in()
中的值是以编程方式应用的(这没有问题)
父项位于列id\u parent中,例如,我有一行:
id id_parent
-----------
36 20
20 31
31 52
但是,我读到以
开始,而通过preor连接
必须允许我在(21,36)中获取id的所有父项
但它只返回21和36,同时还应该返回这样的父值:36、20、31、52。我说得对吗
我该怎么做?尝试另一个方向:
先前的co\u parent.id=co.id
而不是先前的co.id=co.id\u parent
SELECT co.id
from t_factory co
start with co.id in (21,36)
CONNECT BY PRIOR co.id_parent = co.id
尝试另一个方向:
PRIOR co\u parent.id=co.id
而不是PRIOR co.id=co.id\u parent
SELECT co.id
from t_factory co
start with co.id in (21,36)
CONNECT BY PRIOR co.id_parent = co.id
好吧,这很有效。非常感谢。我能解释一下吗?这是规定吗
PRIOR parent=child
?我已经把这个问题和@schurik的答案弄得一团糟:@Zaphod:这叫感谢链接。然后,previor
关键字必须在父端。@Zaphod从co.id=36开始,用previor co.id\u父项,oracle必须搜索下一行,其中id=当前行的id\u父项。如果您说previor id=id\u parant,那么oracle将搜索id\u parent=current id的下一行。非常感谢。我能解释一下吗?这是规定吗PRIOR parent=child
?我已经把这个问题和@schurik的答案弄得一团糟:@Zaphod:这叫感谢链接。然后,previor
关键字必须在父端。@Zaphod从co.id=36开始,用previor co.id\u父项,oracle必须搜索下一行,其中id=当前行的id\u父项。如果您说previor id=id\u parant,那么oracle将搜索id\u parent=current id的下一行。