再帰的にデータを取得する方法について質問させて下さい。
以下のような「TABLE1」と「TABLE2」があった場合に、
TABLE1
------------------------
| ID | AID | JOB |
------------------------
| 1| 10| XXXXX|
------------------------
TABLE2
-------------------------
| ID | PID | NAME |
-------------------------
| 10| 100| aaa|
| 100| 1000| bbb|
| 1000| 10000| ccc|
--------------------------
再帰的に取得したい親階層が2つまで等分かっている場合に、以下のような結果を1度のSQLで取る事は可能でしょうか?
----------------------------------------------------------------------
|ID|AID|JOB |AID_NAME|AID_PID_1|AID_PID_NAME_1|AID_PID_2|AID_NAME_2|
----------------------------------------------------------------------
|1| 10|HIRA | aaa| 100| bbb| 1000| ccc|
----------------------------------------------------------------------
また、上記の結果が取得可能な場合にパフォーマンス的には1度で取得した方が良いのでしょうか?
それともTABLE2の親階層を再帰的に取得するSQLは分割した方が良いのでしょうか?
どうかご教授のほどお願い致します。
No.1ベストアンサー
- 回答日時:
取得できるかといえば、以下のようなクエリで可能です。
SELECT
a.ID ID,
a.AID AID,
a.JOB JOB,
b1.PID AID_PID_1,
b2.NAME AID_NAME_1,
b2.PID AID_PID_2,
b3.NAME AID_NAME_2
FROM TABLE1 a
INNER JOIN TABLE2 b1 ON b1.ID=a.AID
INNER JOIN TABLE2 b2 ON b2.ID=b1.PID
INNER JOIN TABLE2 b3 ON b3.ID=b2.PID
複数回クエリを実行するオーバーヘッドの方が高いと思います。
一発で取ってかまわないでしょう。
気になるならTABLE2のPIDにもインデックスを張ってください。
jamshid6さん
無事に取得する事が出来ました。
パフォーマンス的にも1度で取得した方が良いのですね。
いろいろと勉強になりました。
ご回答ありがとうございましたっ!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- JavaScript gasについて 1 2022/05/31 21:51
- SQL Server ACCESSで3ファイルを結合して、表を作成するやり方を教えて下さい。 17 2022/08/15 20:34
- Oracle sqlで質問です。 idを元にidに紐付くデータで住所コードがjpのみのデータ以外のidを取得したい 4 2023/03/20 17:41
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- SQL Server ACCESSで複数テーブルを結合して、リストを作る方法を教えてください。 2 2022/08/12 19:32
- JavaScript Javascript初心者|jQueryの.val()で値を取得し複数の要素を連結させる方法知りたい 2 2022/06/02 12:06
- その他(プログラミング・Web制作) バッチファイルでPCのモデル名を取得したい 1 2022/03/31 10:58
- Visual Basic(VBA) ActiveReportのdetailをデータセットの自動バインドを使って帳票を出力しています。 1 2023/08/16 07:16
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Viewにインデックスは張れ...
-
SQL*Loaderで、データを加工し...
-
アナライズとインデックス作成...
-
可変個数のデータはどう納める?
-
データ表示順序
-
Oracle Databaseのインデックス...
-
CLOB型へのINSERT
-
ACCESS 複数テーブル・複数フィ...
-
データを削除しても表領域の使...
-
DELETE文でFROM句を省略した場合
-
SQLでスキーマ名(所有者名)の...
-
datapumpの実行方法について
-
ORA-00959: 表領域'****'は...
-
Access レコードを追加できませ...
-
異なるスキーマからデータを抽...
-
Data Pump で大量データインポ...
-
他の処理でselectさせないよう...
-
検索結果の列数を動的に変更したい
-
postgreSQLのint型は桁数指定が...
-
truncate文で全テーブルを一気...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Viewにインデックスは張れ...
-
INDEXの無効化
-
SQL*Loaderで、データを加工し...
-
可変個数のデータはどう納める?
-
アナライズとインデックス作成...
-
文字列中のスペースを排除する...
-
インデックス作成後アナライズ...
-
索引の再構築をすべき?
-
Oracle Databaseのインデックス...
-
主キー以外の項目にNotNull制約...
-
Oracleのあいまい検索について
-
データ表示順序
-
OracleTextの索引再構築について
-
SQL*LoaderとInsertの違いについて
-
【ANALYZE】 テーブル・インデ...
-
IN 句ではインデックスが使用さ...
-
テスト環境と本番環境で、DBか...
-
目的のインデックスが使用され...
-
論理読み込みブロック数とは?
-
インデックスの階層数によるパ...
おすすめ情報