別のテーブル上の項目を使用して項目を更新(UPDATE)することは可能ですか?
製品ブランド: |
Dr.Sum |
---|
製品名:
Dr.Sum
バージョン: 3.x
,
4.x
,
5.x
異なるテーブルの項目を使った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
受注データ.製品コード = 製品マスタ.製品コード
);