電子書籍の厳選無料作品が豊富!

いつもお世話になっております。
下記のように2つのテーブルがあるとして、

在庫TBL
-----------
在庫コード
在庫名称

発注明細TBL
-----------
明細コード
在庫コード
在庫名称2
個数

在庫名称2に在庫TBLの在庫名称をUPDATEしたいのです。もちろん在庫TBLの在庫コード=明細TBLの在庫コードです。

UPDATE 発注明細TBL
SET 明細.在庫名称2 = 在庫.在庫名称
WHERE 明細.在庫コード = 在庫.在庫コード

とやってもエラーになってしまいます。

A 回答 (5件)

在庫に無いコードの名称はどうするかがわからないので、あのようなSQL文にしました。



複数のカラムの更新をしたいのであれば、
INNER JOINのイメージであれば、

UPDATE 発注明細TBL SET
発注明細TBL.在庫名称2 = 在庫TBL.在庫名称
,発注明細TBL.[明細のカラム] = 在庫TBL.[在庫のカラム]
・・・・・・・・・・・・・・・・・・・・
FROM 在庫TBL
WHERE 在庫TBL.在庫コード = 発注明細TBL.在庫コード

でできます。

LEFT JOINのイメージはサブクエリかな?


どうしたいのかを言っていただかないと、どっちにも転向しやすい方法でしか、物を言えませんので、どうしたいかを予め伝えていただけると助かります。

この回答への補足

すみません、深い意味はなかったのですが
AccessのSQLとTransactSQLのUPDATE文の違いが知りたかっただけです。#4の説明で十分やりたいことは達成できました。

補足日時:2005/09/30 17:53
    • good
    • 0

失礼しました。

。。

カテゴリがaccessだと思っており、勘違いしました。。。。
SQL-Serverでした。。。。


訂正いたします。。。。。

先ほどで言うとLeft Joinのイメージはこれです。
-------------------------------------------------
UPDATE 発注明細TBL
SET 在庫名称2 =
(
SELECT 在庫名称 FROM 在庫TBL WHERE 在庫コード = 発注明細TBL.在庫コード
)
-------------------------------------------------

INNER Joinのイメージは、先ほどのSQLに↓を追加してください。。。

WHERE EXISTS (SELECT 在庫名称 FROM 在庫TBL WHERE 在庫コード = 発注明細TBL.在庫コード)
または
WHERE 在庫コード IN (SELECT 在庫コード FROM 在庫TBL)




すいません。。。

この回答への補足

SQL ServerのUPDATE文は、
1つのテーブルの項目しか記述できなくて、
複数リンクさせたりしたい場合は、サブクエリを使うのですね?

補足日時:2005/09/30 17:16
    • good
    • 0

※在庫.コードに存在がある


(1)更新後の明細.名称(INNERでの結合)
⇒在庫.名称に更新

(2)更新後の明細.名称(LEFTでの結合)
⇒在庫.名称に更新

※在庫.コードに存在しない
(3)更新後の明細.名称(INNERでの結合)
⇒明細.名称を引き継ぐ

(4)更新後の明細.名称(LEFTでの結合)
⇒NULLに更新


ってことです。

この回答への補足

ご親切にありがとうございます。
よくわかりました。

INNER JOINで実行したところ、
「AS付近に正しくない構文があります」という
エラーになってしまうのですが、なにかわかりますか?

補足日時:2005/09/30 16:12
    • good
    • 0

追記です。



>INNER JOIN

LEFT JOIN
に変更した場合

在庫TBL.在庫コードに存在していない、発注明細TBL.在庫コードを持つレコードの在庫名称2をNullにします。

この回答への補足

INNER JOINの場合は在庫TBL,明細TBL両方にあるものだけ更新ということでしょうか?
INNER JOINのままだと、在庫TBLに存在しない
発注TBLの在庫コードはどうなりますか?

補足日時:2005/09/30 15:26
    • good
    • 0

UPDATE 発注明細TBL AS 明細


INNER JOIN
在庫TBL AS 在庫
ON 明細.在庫コード = 在庫.在庫コード
SET 明細.在庫名称2 = 在庫.在庫名称
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す