これがグラフノードを持つ私のテーブル「グラフテーブル」です。各タプルは無向エッジを表します。
╔═════════╦═════════╗
║ NODEONE ║ NODETWO ║
╠═════════╬═════════╣
║ A ║ A ║
║ A ║ A ║
║ A ║ B ║
║ A ║ B ║
║ A ║ A ║
║ C ║ D ║
║ C ║ A ║
║ D ║ E ║
║ A ║ E ║
║ D ║ A ║
║ G ║ K ║
║ G ║ G ║
║ K ║ K ║
║ K ║ L ║
║ L ║ M ║
║ Y ║ M ║
║ G ║ L ║
║ G ║ L ║
║ X ║ Z ║
║ D ║ D ║
║ I ║ I ║
╚═════════╩═════════╝
ご覧のとおり、この表には 4 つの異なる無向グラフがあります。
- ノード (A、B、C、D、E)
- ノード (L、K、G、M、Y)
- ノード(I)
- ノード(X,Z)
以下に投稿されたものと同様のクエリを試しました。
select nodeone,nodetwo
from
graphtable
start with NODEONE='D'
connect by nocycle prior nodeone=nodetwo
再帰クエリを使用して、グラフをトラバースすることもできます。
ただし、特定のグラフ内のいずれかのノードから開始する場合、特定のグラフに含まれるすべてのタプルを取得する必要があります。ただし、どのクエリからもその結果が得られません。
nodeone='A' で開始します。すべてのエッジを返すように見えましたが、エッジ 'DD' は存在しませんでした。nodeone='D' で開始します。以前の結果に近いものを返していないようです。
助けてください..事前に助けていただければ幸いです。ありがとうございました。