在关系数据库中检索链表的条目

原学程将引见在闭系数据库中检索链表的条目标处置办法,这篇学程是从其余处所瞅到的,而后减了1些海外法式员的疑问与解问,愿望能对于您有所赞助,佳了,上面开端进修吧。

在关系数据库中检索链表的条目 教程 第1张

成绩描写

关于我的项目,我应用RDBMS完成了链表。链表应用rowid列作为指针,并包括前1个、下1个以及一切者指针(去自分歧的表)。

简略的示比方下所示。

CREATE TABLE EMPLOYEE
(
 EMP_ID  NUMBER(四) NOT NULL,
 OFFICE_CODECHAR(二),
 OFF_EMP_prior ROWID,
 OFF_EMP_next ROWID,
 OFF_EMP_owner ROWID
);

{EMP一,(NULL,EMP二,OFF一)} - {EMP二,(EMP一,EMP三,OFF一)} - {EMP三,(EMP二,NULL,OFF一)}

如今我必需完成1个检索函数,如"查找‘off一’为一切者的列表的‘n(整数)’项"。

这不妨经由过程应用轮回遍历链表去简略天完成。然则,关于1次检索去说,这须要太多的SQL操纵。(我晓得应用序列号不妨是另外一种选择,但是这是到今朝为止所做的决议。)

相反,我在Oracle SQL中找到SELECT - CONNECTED BY,并测验考试

select * from EMPLOYEE
where OFF_EMP_owner = [OFF_ROWID]
connect by nocycle OFF_EMP_prior = rowid;

此盘问用于检索列表的条目,但是成果的次序与我预期的分歧(相似于EMP三-EMP一-EMP二)。

能否不妨应用SELECT-CONNECT BY'检索链表的条目并按列表的次序对于它们停止排序?或许能否存留更适合的SQL?

推举谜底

select * from EMPLOYEE
where DEPT_EMPLOYEE_owner = [OWNER_ROWID}
start with OFF_EMP_prior is NULL
connect by OFF_EMP_prior = prior rowid;

应用下面的盘问处理了成绩。应应用"之前"而没有是"nocle"。

佳了闭于在闭系数据库中检索链表的条目标学程便到这里便停止了,愿望趣模板源码网找到的这篇技巧文章能赞助到年夜野,更多技巧学程不妨在站内搜刮。