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

解決済みの質問

他のテーブルからの値の挿入

テーブル「t1」
「id 1」「name ken」「val 0」
「id 2」「name taro」「val 0」
テーブル「t2」
「id 1」「name ken」「val1 100」「val2 10」
「id 2」「name ken」「val1 300」「val2 5」
「id 3」「name taro」「val1 200」「val2 10」

という2つのテーブルがあった時に、t1の「name ken」に
t2の「name ken」のval1にval2を100で割った値のそれぞれを加えたいのですが
1つのSQL文であらわすとどのようになるのでしょうか?

t1の「name ken」のvalに
t2の「id 1(name ken)」(val1(100) × (val2(10) ÷ 100))と
t2の「id 2(name ken)」((val1(300) × (val2(5) ÷ 100))
を加えたいのです。

投稿日時 - 2007-12-22 01:38:41

QNo.3617858

すぐに回答ほしいです

質問者が選んだベストアンサー

期待する結果を示してもらえると、分かりやすいのですけどね。

例えば、こんな感じ。

update t1
set val=val+(select sum(val1*val2/100) from t2
where t1.name=t2.name
and t1.name='ken');

投稿日時 - 2007-12-26 16:52:19

お礼

ご返答ありがとうございます。
そのやり方でできました。ありがとうございます。

※他の類似の質問などを参考に、もう少し説明の仕方を考えたいと思います。

投稿日時 - 2007-12-27 16:09:06

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

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

回答(3)

ANo.2

MySQLのバージョンによりやり方がことなります。
有効な回答を期待するなら補足が必要です。

投稿日時 - 2007-12-24 10:47:40

お礼

ご返答ありがとうございます。
MySQLバージョンは4.1.16です。

投稿日時 - 2007-12-24 19:45:13

ANo.1

「name ken」や「val1 100」は、列名と値を示しているのでしょうか?
そういう表記の仕方は、一般的に行わず、説明がないと非常に分かりづらいです。

insert ~ selectを使えば、実現可能と思います。

投稿日時 - 2007-12-22 02:21:23