DFU, Query, SQL

58. ファイルの結合

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                   

[解説]

同じ品種コードどうしが横並びに並んでいることで正しく結合されていることがわかる。