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