目次
Oracle が子ノードを再帰的にクエリする方法
ホームページ データベース Oracle Oracle で子ノードを再帰的にクエリする方法

Oracle で子ノードを再帰的にクエリする方法

Jan 25, 2022 pm 02:38 PM
oracle

Oracle では、select ステートメントを使用して、子ノードを再帰的にクエリできます。このステートメントの機能は、テーブル データに対して単純なクエリを実行することです。構文は、「SELECT * FROM テーブル名 START WITH 条件 1 CONNECT」です。 BY PRIOR 条件 2 WHERE 条件 3」。

Oracle で子ノードを再帰的にクエリする方法

このチュートリアルの動作環境: Windows 10 システム、Oracle 11g バージョン、Dell G3 コンピューター。

Oracle が子ノードを再帰的にクエリする方法

文法構造

SELECT ... FROM    + 表名  START WITH + 条件1 CONNECT BY PRIOR + 条件2  WHERE  + 条件3
ログイン後にコピー

条件 1: これはルート ノードの修飾ステートメントです。もちろん、修飾条件は次のように緩和できます。複数のルート ノード、つまり複数のツリーを取得します。接続関係では、リストに加えて列式も許可されます。 START WITH 句はオプションであり、どのノードが検索ツリー構造のルート ノードとして使用されるかを識別するために使用されます。この句を省略した場合、クエリ条件を満たすすべての行がルート ノードとして使用されることを意味します。

条件 2: これは、前のレコードを表すために PRIOR が使用される接続条件です。たとえば、CONNECT BY PRIOR STUDENT_ID = GRADE_ID、つまり、前のレコードの STUDENT_ID がこのレコードの GRADE_ID であることを意味します。レコード、つまり、このレコードの親は前のレコードです。 CONNECT BY 句は、データの各行が階層順に取得されることを示し、テーブル内のデータがツリー構造の関係に接続されることを指定します。 PRIOR 演算子は、結合関係の 2 つの列のいずれかの前に配置する必要があります。ノード間の親子関係の場合、PRIOR 演算子は一方の側で親ノードを表し、もう一方の側で子ノードを表すことにより、ツリー構造の検索順序がトップダウンかボトムアップかを決定します。

条件 3: これはフィルター条件であり、返されたレコードをフィルターするために使用されます。

注:

1、CONNECT BY PRIOR は構造化クエリで使用されます;

2、START WITH... CONNECT BY PRIOR... の役割、簡単に言うと, ツリー構造をテーブルに格納することです。

子ノードを介してルート ノードにトラバースします。

select * from persons.dept start with deptid=76 connect by prior paredeptid=deptid
ログイン後にコピー

ルート ノードを介して子ノードをトラバースします (ルート ノードを除く)。

select * from persons.dept start with paredeptid=0 connect by prior deptid=paredeptid
ログイン後にコピー

子ノードをトラバースします。ルート ノード (ルート ノードを含む)。

select * from persons.dept start with deptid=0 connect by prior deptid=paredeptid
ログイン後にコピー

レベル キーワードを使用してレベルをクエリできます。

select a.*,level from persons.dept a start with paredeptid=0 connect by prior deptid=paredeptid
ログイン後にコピー

備考:

. で始まる文字の使用法.connect by, start with 以下は再帰のシードです。

再帰のシードは、再帰が開始される場所です。connect by の後の「前」です。デフォルトの場合: 条件を満たす開始行のみがクエリ可能で、再帰クエリは実行されません。

connect by priority の後に配置されたフィールドは関連性があり、クエリの方向を示します。

演習: 子ノードから最上位ノードを取得

select FIRST_VALUE(deptid) OVER (ORDER BY LEVEL DESC ROWS UNBOUNDED PRECEDING) AS firstdeptid from persons.dept start with deptid=76 connect by prior paredeptid=deptid
ログイン後にコピー

テーブル構造

DEPTID PAREDEPTID NAME
NUMBER NUMBER CHAR (40 Byte)
ログイン後にコピー

部門ID 親部門ID(所属部門ID) 部門名

推奨チュートリアル : "Oracle ビデオ チュートリアル "

以上がOracle で子ノードを再帰的にクエリする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Oracleの表空間サイズを確認する方法 Oracleの表空間サイズを確認する方法 Apr 11, 2025 pm 08:15 PM

Oracle Tablespaceサイズを照会するには、次の手順に従ってください。クエリを実行して、TableSpace名を決定します。DBA_TABLESPACesからTableSpace_Nameを選択します。クエリを実行してテーブルスペースのサイズをクエリします:sum(bytes)をtotal_size、sum(bytes_free)asavail_space、sum(bytes) - sum(bytes_free)as sum(bytes_free)as dba_data_files from tablespace_

Oracleデータベースをインポートする方法 Oracleデータベースをインポートする方法 Apr 11, 2025 pm 08:06 PM

データインポート方法:1。SQLLOADERユーティリティを使用します。データファイルを準備し、制御ファイルを作成し、SQLLoaderを実行します。 2。IMP/EXPツールを使用します。データをエクスポートし、データをインポートします。ヒント:1。ビッグデータセットに推奨されるSQL*ローダー。 2。ターゲットテーブルが存在する必要があり、列定義が一致します。 3。インポート後、データの整合性を検証する必要があります。

Oracleでテーブルを作成する方法 Oracleでテーブルを作成する方法 Apr 11, 2025 pm 08:00 PM

Oracleテーブルの作成には、次の手順が含まれます。作成テーブルの構文を使用して、テーブル名、列名、データ型、制約、およびデフォルト値を指定します。テーブル名は簡潔で説明的である必要があり、30文字を超えてはなりません。列名は説明的でなければならず、データ型は列に保存されているデータ型を指定します。 NOT NULL制約により、列でnull値が許可されていないことが保証され、デフォルト句は列のデフォルト値を指定します。テーブルの一意の記録を識別する主要なキーの制約。外部キーの制約は、表の列が別のテーブルの主キーを指していることを指定します。主要なキー、一意の制約、デフォルト値を含むサンプルテーブル学生の作成を参照してください。

Oracleのインストールをアンインストールする方法は失敗しました Oracleのインストールをアンインストールする方法は失敗しました Apr 11, 2025 pm 08:24 PM

Oracleインストール障害のためのアンインストールメソッド:Oracleサービスを閉じ、Oracleプログラムファイルとレジストリキーを削除し、Oracle環境変数をアンインストールし、コンピューターを再起動します。アンインストールが失敗した場合、Oracle Universal Uninstallツールを使用して手動でアンインストールできます。

Oracleを再び追求する方法 Oracleを再び追求する方法 Apr 11, 2025 pm 07:33 PM

Oracleは複数の重複排除クエリメソッドを提供します。個別のキーワードは、各列の一意の値を返します。 Group by Clauseは、結果をグループ化し、各グループの非繰り返し値を返します。一意のキーワードは、一意の行のみを含むインデックスを作成するために使用され、インデックスをクエリすると自動的に重複排除が行われます。 row_number()関数は、一意の数値を割り当て、行1のみを含む結果をフィルタリングします。min()またはmax()関数は、数値列の非繰り返し値を返します。交差する演算子は、2つの結果セットの共通値を返します(複製なし)。

Oracleのインスタンス名を表示する方法 Oracleのインスタンス名を表示する方法 Apr 11, 2025 pm 08:18 PM

Oracleでインスタンス名を表示するには3つの方法があります。「sqlplus」と「v $ instanceからselect instance_name;」を使用します。」コマンドラインのコマンド。 「show instance_name;」を使用しますSQL*Plusのコマンド。オペレーティングシステムのタスクマネージャー、Oracle Enterprise Manager、またはオペレーティングシステムを介して、環境変数(LinuxのOracle_Sid)を確認してください。

Oracleビューを暗号化する方法 Oracleビューを暗号化する方法 Apr 11, 2025 pm 08:30 PM

Oracle View暗号化により、ビュー内のデータを暗号化でき、それにより機密情報のセキュリティが強化されます。手順には以下が含まれます。1)マスター暗号化キー(MEK)の作成。 2)暗号化されたビューを作成し、暗号化されるビューとMEKを指定します。 3)暗号化されたビューにアクセスすることをユーザーに許可します。暗号化されたビューがどのように機能するか:ユーザーが暗号化されたビューを求めてクエリをするとき、OracleはMEKを使用してデータを復号化し、認定ユーザーのみが読み取り可能なデータにアクセスできるようにします。

テーブルフィールドをOracleに追加する方法 テーブルフィールドをOracleに追加する方法 Apr 11, 2025 pm 07:30 PM

ALTER TABLEステートメントを使用して、特定の構文は次のとおりです。ALTERTABLE TABLE_NAME add column_name data_type [constraint-clause]。 WHERE:table_nameはテーブル名、column_nameはフィールド名、data_typeはデータ型、制約条項はオプションの制約です。例:テーブルの従業員を変更すると、電子メールvarchar2(100)は、従業員テーブルに電子メールフィールドを追加します。

See all articles