» www.Giftbox.Az - Bir birindən gözəl hədiyyə satışı
ウィキペディアランダム
毎日カテゴリ
共有: WhatsappFacebookTwitterVK

再帰クエリ

再帰クエリ (: recursive query) もしくは 階層クエリ (: hierarchical query) は、再帰的な問い合わせを行う SELECT ステートメントである。階層構造を持つデータなどに使う。

WITH RECURSIVE

標準SQLでは再帰クエリを共通表式の一環として定義している。WITH RECURSIVE 形式の構文をサポートする関係データベース管理システムを以下に挙げる。通常RECURSIVE句は省略可能であるが、PostgreSQLでは省略できない。:

例 (PostgreSQL):

 WITH RECURSIVE r(level, employee, empno, mgr) AS (  SELECT 1, ename, empno, mgr  FROM emp WHERE mgr IS NULL  UNION ALL  SELECT r.level + 1, repeat(' ', r.level) || emp.ename, emp.empno, emp.mgr  FROM emp, r WHERE emp.mgr = r.empno  )  SELECT * FROM r; 

CONNECT BY

非標準の構文として CONNECT BY 形式の構文をサポートするデータベースを以下に挙げる:

構文:

SELECT select_list FROM table_expression [ WHERE ... ] [ START WITH start_expression ] CONNECT BY { PRIOR parent_expr = child_expr | child_expr = PRIOR parent_expr } [ ORDER SIBLINGS BY column1 [ ASC | DESC ] [, column2 [ ASC | DESC ] ] ... ] [ GROUP BY ... ] [ HAVING ... ] ... 

例 (Oracle Database):

 SELECT LEVEL, LPAD (' ', 2 * (LEVEL - 1)) || ename employee, empno, mgr  FROM emp START WITH mgr IS NULL  CONNECT BY PRIOR empno = mgr; 

上記のクエリからは以下のような結果が得られる:

 level | employee | empno | mgr -------+-------------+-------+------ 1 | KING | 7839 | 2 | JONES | 7566 | 7839 3 | SCOTT | 7788 | 7566 4 | ADAMS | 7876 | 7788 3 | FORD | 7902 | 7566 4 | SMITH | 7369 | 7902 2 | BLAKE | 7698 | 7839 3 | ALLEN | 7499 | 7698 3 | WARD | 7521 | 7698 3 | MARTIN | 7654 | 7698 3 | TURNER | 7844 | 7698 3 | JAMES | 7900 | 7698 2 | CLARK | 7782 | 7839 3 | MILLER | 7934 | 7782 (14 rows) 

関連項目

  • 木構造
  • 新しい業界標準「SQL99」詳細解説

脚注

  1. ^ “common-table-expression”. DB2 Version 9.1 for z/OS. 2009年9月10日閲覧。
  2. ^ “WITH common_table_expression (Transact-SQL)”. SQL Server 2008. 2009年9月10日閲覧。
  3. ^ Helen Borrie (2008年7月15日). “Firebird 2.1 Release Notes”. 2009年9月10日閲覧。
  4. ^ “WITH問い合わせ”. PostgreSQL 文書. 2009年9月10日閲覧。
  5. ^ “Oracle Database 11g Release 2に関する10の重要なこと – askTom Live - Point4: Recursive Subquery Factoring 【再帰的副問合せのファクタリング】”. 2010年10月31日閲覧。
  6. ^ “Advanced - H2 Database”. 2010年10月31日閲覧。
  7. ^ “階層問合せ”. Oracle Database SQL言語リファレンス 11gリリース2. 2010年10月31日閲覧。
  8. ^ Hierarchical Queries, EnterpriseDB
ウィキペディア、ウィキ、本、library、論文、読んだ、ダウンロード、自由、無料ダウンロード、mp3、video、mp4、3gp、 jpg、jpeg、gif、png、画像、音楽、歌、映画、本、ゲーム、ゲーム。