この記事では、Oracleに関する関連知識を提供します。主に ORACLE ツリー構造クエリの解析に関する記事を紹介します。この記事では、このトピックについて詳しく説明します。一緒に見てみましょう。お役に立てば幸いです。みんなに。
推奨チュートリアル: 「Oracle ビデオ チュートリアル」
日常のプログラミングでは、次のようなツリー構造に遭遇することがよくあります。組織構造、管理部門などこれらは多くの場合、データベース内のテーブルを通じて表示されます。ここでは単純な行政区分表を例に挙げていますが、実際にはこれに他の記述項目やレベルを追加することも可能です。
#テーブルは ID と PID に関連付けられ、ツリー構造の保存を実現します。テーブルの作成とデータ ステートメントは次のとおりです。
-- Create table create table TREETEST ( id NVARCHAR2(50), pid NVARCHAR2(50), name NVARCHAR2(50) )
insert into TREETEST (ID, PID, NAME) values ('1', null, '山东省'); insert into TREETEST (ID, PID, NAME) values ('2', '1', '青岛市'); insert into TREETEST (ID, PID, NAME) values ('3', '1', '烟台市'); insert into TREETEST (ID, PID, NAME) values ('4', null, '河南省'); insert into TREETEST (ID, PID, NAME) values ('5', null, '河北省'); insert into TREETEST (ID, PID, NAME) values ('6', '2', '市南区'); insert into TREETEST (ID, PID, NAME) values ('7', '2', '市北区'); insert into TREETEST (ID, PID, NAME) values ('8', '2', '即墨市');
ツリー構造をクエリするにはどうすればよいですか? Oracle はクエリに対して再帰クエリを提供します。基本的な構文は次のとおりです:
SELECT [Column]….. FEOM [Table] WHERE Conditional1 START WITH Conditional2 CONNECT BY PRIOR Conditional3 ORDER BY [Column]
説明:
## 以下の具体的な例を見てみましょう:
1. 山東省のすべてのサブノードをクエリします
SELECT * FROM TREETEST t START WITH t.PID=1 CONNECT BY PRIOR t.ID = t.PID
## は山東省のノードであり、クエリ結果は次のようになります:
#2. クエリ青島市の次のレベルの子ノード (上記のすべての子ノードおよび次のレベルの子ノードとの違いに注意してください)
3.青島市、山東省などを接続して表示する必要がある場合は、SYS_CONNECT_BY_PATH を使用してこれを実現できます。
SELECT t.ID, SYS_CONNECT_BY_PATH(t.NAME, '\') AS INDU_NAME FROM TREETEST t START WITH t.PID IS NULL CONNECT BY PRIOR t.ID = t.PID
クエリの結果は次のとおりです。
4. 同様に、下から上に進むこともできます。推奨チュートリアル: 「Oracle ビデオ チュートリアル」
以上がORACLE ツリー構造クエリを分析する 1 つの記事の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。