ホームページ  >  記事  >  データベース  >  ORACLE ツリー構造クエリを分析する 1 つの記事

ORACLE ツリー構造クエリを分析する 1 つの記事

WBOY
WBOY転載
2022-09-05 17:48:242558ブラウズ

この記事では、Oracle に関する関連知識を提供します。主に ORACLE ツリー構造クエリの解析に関する記事を紹介します。この記事では、このトピックについて詳しく説明します。一緒に見てみましょう。お役に立てば幸いです。みんなに。

ORACLE ツリー構造クエリを分析する 1 つの記事

推奨チュートリアル: 「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---フィルタ条件、返されたすべてのレコードがフィルタリングされます。
  • 条件 2---ルート ノードの制限条件。もちろん、複数のルート ノードを取得する、つまり複数のツリーを取得する権限を緩和することもできます。
  • 条件 3-- - リンク条件、目的は父と息子の関係を与え、この関係に基づいて再帰クエリを実行します (上記のテーブルでは ID=PID)
  • Sort---返されたすべてを並べ替えますレコード

## 以下の具体的な例を見てみましょう:

1. 山東省のすべてのサブノードをクエリします

SELECT *
  FROM TREETEST t
 START WITH t.PID=1
CONNECT BY PRIOR t.ID = t.PID
# ID が 1 の

## は山東省のノードであり、クエリ結果は次のようになります:

#2. クエリ青島市の次のレベルの子ノード (上記のすべての子ノードおよび次のレベルの子ノードとの違いに注意してください)

ORACLE ツリー構造クエリを分析する 1 つの記事

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 サイトの他の関連記事を参照してください。

声明:
この記事はjb51.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。