こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

sqlの積について

以下、2つのテーブルがあるとします。
cake (テーブル)
id, name, price (カラム)
1, チョコ, 300
2, マッチャ, 250
3, イチゴ, 400
4, チーズ, 200

sold (テーブル)
name, num, total_sales (カラム)
チョコ, 3, " "
マッチャ, 4, " "
イチゴ, 1, " "
チーズ, 5, " "
(total_salesは空欄という設定です)

この2つのテーブルにおいて、inner joinを使い、nameをカギとしてcakeとsoldを結びます。
(select * from cake inner join sold on cake.name = sold.name;)

そのあと、各商品においてpriceとnumの積を計算し、total_salesに結果をupdateするにはどうすればいいのでしょうか…

update = sold
set sold.total_sales = cake.price* sold.num
from cake inner join sold
on cake.name = sold.name;

UPDATE S
SET total_sales = S.num * C.price
FROM cake as C inner join sold as S ON C.name = S.name
などいろいろ試してみましたが、どうしてもできません…

投稿日時 - 2019-06-20 10:05:52

QNo.9627489

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

UPDATE sold INNER JOIN cake ON sold.name = cake.name
SET sold.total_sales = sold.num * cake.price

SQLはこんな感じで可能です。

テーブル設計に違和感を覚えましたが、例示のためのテーブルでしょうか?
soldテーブルのname列をcake_idとでもして、soldテーブルとcakeテーブルの結合はidで行うようにした方が良いと思います。

投稿日時 - 2019-06-20 12:39:43

ANo.1

SQL一発では無理でしょうね。
プログラムを組んで一旦SELECTした結果を基にUPDATEを1件ずつ掛けるしかありません。

投稿日時 - 2019-06-20 12:18:31

あなたにオススメの質問