別のテーブル上の項目を使用して項目を更新(UPDATE)することは可能ですか?

製品ブランド:

Dr.Sum

製品名: Dr.Sum
バージョン: 3.x , 4.x , 5.x

公開日時:

2016/01/25 18:31

更新日時:

2021/02/22 09:24

記事番号:

000004358

異なるテーブルの項目を使ったUPDATE文は、Dr.Sumでは記述できません。

UPDATEを行なうのではなく、条件に合致するようにJOINし、その結果をテーブルにエクスポートするようにしてください。

<例:「受注データ」テーブルの[金額]を「製品マスタ」テーブルの[価格]*[数量]とした結果をエクスポートする>

「dwtab_export_table」コマンドを実行します。

(実行例)

dwtab_export_table 127.0.0.1 6001 "Administrator" "password" "SELECT文を発行するDB名" "SELECT文" "エクスポート先のDB名" "エクスポート先のテーブル" 0 1

 

<SELECT文>は以下のように記述します。


SELECT
    受注データ.*,
    受注データ.数量 * 製品マスタ.価格
FROM
    受注データ
    LEFT JOIN
        製品マスタ
    ON  受注データ.製品コード = 製品マスタ.製品コード

 

「dwtab_export_table」の詳細はオンラインマニュアルをご確認ください。

Dr.Sum Serverコマンドリファレンス

┗2-19 dwtab_export_table(テーブルのデータを他のテーブルにエクスポートする)

 


(※)以下のようなSQLは「解析エラー」になり、Dr.Sumでは発行できません。

 Dr.SumのUPDATEでは、次の制限があります。

  • UPDATE句に指定できるのはオブジェクトとして存在する単一のテーブルのみです

  • SET句にサブクエリは記述できません

 

<UPDATE句に単一のテーブル以外を指定した例>


UPDATE
    受注データ
    INNER JOIN
        製品マスタ
    ON  受注データ.製品コード = 製品マスタ.製品コード
SET
        受注データ.金額 = 受注データ.数量 * 製品マスタ.価格;

 


UPDATE
    (
        SELECT
            受注データ.製品名,
            受注データ.数量,
            受注データ.金額,
            製品マスタ.価格
        FROM
            受注データ
            INNER JOIN
                製品マスタ
            ON  受注データ.製品コード = 製品マスタ.製品コード
    )
SET
    金額 = 数量 * 価格;

 


UPDATE
    受注ビュー
SET
    金額 = 数量 * 価格;

 

<SET句にサブクエリーを指定した例>


UPDATE
    受注データ
SET
    金額 = (
        SELECT
            受注データ.数量 * 製品マスタ.価格
        FROM
            製品マスタ
        WHERE
            受注データ.製品コード = 製品マスタ.製品コード
    );

 

回答

この記事は役に立ちましたか?

コメントしない

「送信」をクリックすると、次の内容に同意したことになります:カスタマーサクセス利用規約