- PR -

MYSQLでのselect文

1
投稿者投稿内容
x
会議室デビュー日: 2006/11/26
投稿数: 14
お住まい・勤務地: 東京
投稿日時: 2007-05-01 16:17
お世話になります。

MySQL4.1で質問があります。
二つの同型のテーブルから特定のカラムだけをSUMしたいのですが、
どうにもうまくいきません。どなたか良い方法を伝授していただけませんでしょうか。
過去ログも見たのですが、見つからないというかなんと検索したらよいものか・・と。
宜しくお願いします。

例)
テーブル( log1 )
+------+------+
| a | b |
+------+------+
| name1| 2 |
| name2| 3 |
+------+------+

テーブル( log2 )
+------+------+
| a | b |
+------+------+
| name1| 4 |
| name2| 6 |
+------+------+

の二つのテーブルがある場合にこれを足すようなイメージで
結果テーブル( log )
+------+------+
| a | b |
+------+------+
| name1| 6 |
| name2| 9 |
+------+------+

としたいのです。
忠犬
大ベテラン
会議室デビュー日: 2006/05/01
投稿数: 109
投稿日時: 2007-05-01 17:07
MySQL 4.1とのことなので、unionに加えインラインビューも使えます。

コード:
select a,sum(b)
 from
 (select a,b from log1
  union all
  select a,b from log2) as x
 group by a

x
会議室デビュー日: 2006/11/26
投稿数: 14
お住まい・勤務地: 東京
投稿日時: 2007-05-01 17:50
ありがとうございます!
しょうもない質問すいませんでした。
末記人
大ベテラン
会議室デビュー日: 2005/12/05
投稿数: 233
お住まい・勤務地: あわにこ
投稿日時: 2007-05-01 20:35
こんばんは

a カラムを管理するマスターテーブルがあれば外部結合でも出来そうですね

テーブル( amaster )
+------+
| a |
+------+
| name1|
| name2|
+------+

select a.a, sum(log1.b) + sum(log2.b)
from amaster a left join log1 on (a.a=log1.a) left join log2 on (a.a=log2.a)
group by 1;

多分これでいけるはず。実験してないけど

[ メッセージ編集済み 編集者: 末記人 編集日時 2007-05-01 20:35 ]
1

スキルアップ/キャリアアップ(JOB@IT)