SQLも複数のファイルを結合することができる。
RPG であれば CHAIN命令によってアクセス・パス(キー)のある
ファイルに対してだけの結合であるが
SQLによる結合は柔軟であってキーがなくても
フィールド同士で自由に指定して結合することができる。
QUERYのファイル結合を見てもわかるように
SQLでの結合は自由度が高い。
(しかし多くの場合はキーで結合することになるのは
データ・ベースがそのような設計になっているからである。)
商品マスター:SHOHIN と品種マスター: HINSHU の結合は
SELECT …. FROM QTRFIL/SHOHIN T01, QTRFIL/HINSHU T02 WHERE T01.SHSCOD = T02.HNSCOD
のように品種コードどうしが等しいものを
WHERE T01.SHSCOD = T02.HNSCOD
のようにして結合する。
FROM QTRFIL/SHOHIN T01, QTRFIL/HINSHU T02
は ファイル識別としてT01, T02, …のように識別子をつけて区別することに゜なっている。
そうすると総称記述の部分も
SELECT T01.*, T02.*
のような記述を必要とする。
従って
SELECT T01.*, T02.* FROM QTRFIL/SHOHIN T01, QTRFIL/HINSHU T02 WHERE T01.SHSCOD = T02.HNSCOD
のような記述となる。
これを対話式SQLで実行してみると
データの表示 行の位置指定 . . . . . . . ....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8....+....9... 商品コード 商品名 単価 品種コード 品種コード 品種名 A004 TEST A004 134,000 0001 0001 カラーTV A007 TEST A007 135,000 0001 0001 カラーTV RX-AZ1 液晶テレビ 80 インチ 300,000 0001 0001 カラーTV TH-19VS30 コンパクトTVBS19 120,000 0001 0001 カラーTV TH-21VS30 コンパクトTVBS21 128,000 0001 0001 カラーTV TH-25GF10 衛星放送内蔵TV25 168,000 0001 0001 カラーTV TH-25GV10 ビデオ内蔵型TV25 255,000 0001 0001 カラーTV TH-25VS30 コンパクトTVBS25 11,300 0001 0001 カラーTV TH-29GF10 カラーTV画王BS29 220,000 0001 0001 カラーTV TH-29GV10 ビデオ内蔵型TV29 280,000 0001 0001 カラーTV TH-33VS35 カラーTV画王BS33 350,000 0001 0001 カラーTV A005 TEST A005 325,000 0002 0002 ビデオデッキ NV-BS30S 目次ビデオ 165,000 0002 0002 ビデオデッキ NV-BS50S ビデオ画王 200,000 0002 0002 ビデオデッキ NV-CF1 Cカセット編集ビデオ 58,000 0002 0002 ビデオデッキ NV-CF9 漢字テスト 19,000 0002 0002 ビデオデッキ NV-F850 音声録画ビデオ 140,000 0002 0002 ビデオデッキ NV-HK1 歌えるビデオ 90,000 0002 0002 ビデオデッキ NV-H1T-S みんなのビデオ 69,800 0002 0002 ビデオデッキ F3= 終了 F12= 取り消し F19= 左 F20= 右 F21= 分割 F22= 幅 80
[解説]
同じ品種コードどうしが横並びに並んでいることで正しく結合されていることがわかる。