アプリ版:「スタンプのみでお礼する」機能のリリースについて

最近初めて練習問題に詰まったのでどなたかお力添えください。
目的は3テーブルを使って条件にあったカラムを更新
詳細としては
①AテーブルとBテーブルを結合して条件にあった値を出す
②その出した項目とCテーブルにある値を比較して一致しているものは更新
更新は
"SET Aテーブル.BUPIIN = Cテーブル.BUPIIN"
になります。
Aテーブル、
ID
NO
NOU
BUPIIN

Bテーブル
ID
NO
NOU

Cテーブル
NO
GO
BUPIIN

select文のみ作りあげたのですがupdate文を作るとなるとどこにどうはめてというのがわからなくなりどなたか知恵をお貸しください。
以下select文
select Aテーブル.NOU from Aテーブル
inner join Bテーブル
on Aテーブル.ID = Bテーブル.ID
and Aテーブル.NO = Bテーブル.NO
and Aテーブル.NOU = Bテーブル.NOU
where
Aテーブル.BUPIIN in (
select Cテーブル.BUPIIN from Cテーブル
where Aテーブル.NO = Cテーブル.NO)

質問者からの補足コメント

  • where句が間違えてました。
    誤)
    where
    Aテーブル.BUPIIN in (
    select Cテーブル.BUPIIN from Cテーブル
    where Aテーブル.NO = Cテーブル.NO)

    正)
    where
    Aテーブル.NO in (
    select Cテーブル.BUPIIN from Cテーブル
    where Aテーブル.NO = Cテーブル.NO)

      補足日時:2022/06/22 14:17
  • where句が間違えてました。
    誤)
    where
    Aテーブル.BUPIIN in (
    select Cテーブル.BUPIIN from Cテーブル
    where Aテーブル.NO = Cテーブル.NO)

    正)
    where
    Aテーブル.NO in (
    select Cテーブル.NO from Cテーブル
    where Aテーブル.NO = Cテーブル.NO)

      補足日時:2022/06/22 14:18

A 回答 (2件)

更新対象である A テーブルのレコードを中心に考えましょう。



update A
set BUPIIN = (
_ select BUPIIN
_ from C where レコードと一対一結合できるCの条件
) where
exists (select 1 from B where レコードと結合できるBの条件 )
and
exists (select 1 from C where レコードと結合できるCの条件 )
    • good
    • 1
    • good
    • 0

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

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