2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

RPG構文 vs SQL文(結合関連)

Last updated at Posted at 2025-10-17

環境情報

今回の検証ではi Learning社の公開しているQEOLのライブラリーの
TOKMSP(得意先マスター)を使用しています。
その他のデータはこちらで検証用に用意したものです。
https://www.i-learning.jp/service/selfstudy/eol.html

SQL&RPG比較

以下の構文を使用したサンプルSQL文をACSのSQLスクリプトで実行。
UNION(和集合)
INNERJOIN(内部結合)
LEFTJOIN(外部結合)
RPGで同じ実行結果になるようにプログラムを開発。
2つの記述を比較して双方のメリット、デメリットを考えてみる。

UNION(SQL)

TOKMSP24(得意先マスター24年)とTOKMSP25(得意先マスター25年)をUNIONで結合。
データの中身は同じため、同一得意先コードが2件ずつ存在。

SQL文

      SELECT * FROM QEOL.TOKMSP24
      UNION ALL
      SELECT * FROM QEOL.TOKMSP25
      ORDER BY TKBANG

実行結果

image.png

UNION(RPG)

RPGで再現するなら?
2つのマスターを全件READしてファイルに登録。

RPG文

image.png

INNER JOIN(SQL)

TOKMSP(得意先マスター)にTIKUMSP(地区マスター)を地区コードで結合し、
地区情報を取得。
地区マスターには地区コード02のデータのみ存在。
地区コード02の得意先データのみ抽出される。

SQL文

      SELECT * 
      FROM QEOL.TOKMSP
      INNER JOIN QEOL.TIKUMSP ON TKTIKU = TITIKU

実行結果

image.png

INNER JOIN(RPG)

 RPGで再現するなら?
 地区マスターが存在する時のみ地区情報を取得してデータを作成。
 地区マスターが存在しない場合はデータを作成しない。
 WRKQRYでは結合のタイプ=1がINNER JOINに該当。

RPG文

image.png

LEFT JOIN(SQL)

TOKMSP(得意先マスター)にTIKUMSP(地区マスター)を地区コードで結合し、
地区情報を取得。 
地区マスターには地区コード02のデータのみ存在。
全ての得意先データが抽出される。地区コード02以外のデータは地区情報が空欄。

SQL文

      SELECT * 
      FROM QEOL.TOKMSP
      LEFT JOIN QEOL.TIKUMSP ON TKTIKU = TITIKU

実行結果

image.png

LEFT JOIN(RPG)

RPGで再現するなら?
地区マスターが存在する場合は地区情報を取得してデータを作成。
地区マスターが存在しない場合は地区情報を空欄のままデータを作成。
WRKQRYでは結合のタイプ=2がLEFT JOINに該当。

RPG文

image.png

当記事の著作権はIBMに帰属します。
詳細はこちらを参照ください。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?