NESTED TABLESの概要

NESTED TABLES句は、参加している表を指定し、3つのグループに分けます。まず、データのフェッチ元となるターゲット表を指定します。次に、ANCESTORS句(存在する場合)で、表階層内のターゲット表の祖先である必要がある表の数を指定します。最後に、DESCENDANTS句(存在する場合)で、表階層内のターゲット表の子孫である必要がある表の数を指定します。

ノート:

意味上、NESTED TABLES句は、ターゲット表を中心とした多数の左外部結合操作と同じです。
ネストされた表の特性:
  • 同じ階層内の複数の表を問い合せます
  • ANSI-SQL標準ではありません
  • 兄弟表の結合をサポートします

表4-1 ネストされた表とLOJ

ネストされた表 LOJ
同じ階層内の複数の表を問い合せます 同じ階層内の複数の表を問い合せます
ANSI-SQL標準ではありません ANSI-SQL標準
兄弟表の結合をサポートします 兄弟表の結合はサポートされません

例のとおりに操作する場合は、スクリプトparentchildtbls_loaddata.sqlをダウンロードして、次に示すように実行します。このスクリプトにより、例で使用する表が作成され、表にデータがロードされます。

KVSTOREまたはKVLiteを起動し、SQL.shellを開きます。
 java -jar lib/kvstore.jar kvlite -secure-config disable
 java -jar lib/sql.jar -helper-hosts localhost:5000 -store kvstore
parentchildtbls_loaddata.sqlには、次の内容が含まれています:
### Begin Script ###
load -file parentchild.ddl
import -table ticket  -file ticket.json
import -table ticket.bagInfo  -file bagInfo.json
import -table ticket.passengerInfo  -file passengerInfo.json
import -table ticket.bagInfo.flightLegs  -file flightLegs.json
### End Script ###
loadコマンドを使用して、スクリプトを実行します。
load -file parentchildtbls_loaddata.sql