我有以下数据集,它表示有向图中的节点。
CREATE TABLE nodes (NODE_FROM VARCHAR2(10),
NODE_TO VARCHAR2(10));
INSERT INTO nodes VALUES('GT','TG');
INSERT INTO nodes VALUES('GG','GC');
INSERT INTO nodes VALUES('AT','TG');
INSERT INTO nodes VALUES('TG','GC');
INSERT INTO nodes VALUES('GC','CG');
INSERT INTO nodes VALUES('TG','GG');
INSERT INTO nodes VALUES('GC','CA');
INSERT INTO nodes VALUES('CG','GT');
视觉表示: http ://esser.hopto.org/temp/image1.JPG
使用此数据集,我希望用户输入一个级别(例如 2),这将返回距离特定节点 2 个“跃点”的所有节点):
NODE_FROM NODE_TO
TG GC
TG GG
AT TG
GT TG
http://esser.hopto.org/temp/image2.JPG
我目前的尝试如下所示:
SELECT node_from, node_to
FROM nodes
WHERE level <= 2 -- Display nodes two "hops" from 'AT'
START WITH node_from = 'AT'
CONNECT BY NOCYCLE PRIOR node_to = node_from
OR node_to = PRIOR node_from
GROUP BY node_from, node_to;
http://esser.hopto.org/temp/image3.JPG
如您所见,缺少关系:GT -> TG。