- PR -

テーブル結合できなくて

1
投稿者投稿内容
未記入
会議室デビュー日: 2005/03/24
投稿数: 7
投稿日時: 2005-03-24 23:53
DBはオラクルを使用しています。

片方のテーブルには
ID KUBUN KANE1
-----------------
AA 10 2000
AA 20 1000
AB 30 700

もう片方には
ID KUBUN KANE2
-----------------
AA 30 2000
AB 20 1000

で結合して

ID KUBUN KANE1 KANE2
-------------------------
AA 10 2000 0
AA 20 1000 0
AA 30 0 2000
AB 20 1000 0
AB 30 700 0

というようなテーブルを作成したいのですが、どうしても作成できません。
だれか、良い結合方法はありませんか。
永井和彦
ぬし
会議室デビュー日: 2002/07/03
投稿数: 276
お住まい・勤務地: 東京都
投稿日時: 2005-03-25 09:00
http://www.seshop.com/se/edu/shikaku/omo/miti/silver_miti26.asp?educat=silver2
おふぃすこま
常連さん
会議室デビュー日: 2005/01/24
投稿数: 22
投稿日時: 2005-03-25 09:05
おふぃすこまです。

SELECT ID,KUBUN,KANE1,0 AS KANE2 FROM 片方のテーブル
UNION SELECT ID,KUBUN,0 AS KANE1,KANE2 FROM もう片方のテーブル

『片方のテーブル』=KANE1フィールドが存在しているテーブル
『もう片方のテーブル』=KANE2フィールドが存在しているテーブル

↑でどうでしょう?
あ、ちなみにKANE1、KANE2はNUMBER型として書きましたので、
他の型でしたら、その型に合わせて下さい。
未記入
会議室デビュー日: 2005/03/24
投稿数: 7
投稿日時: 2005-03-25 09:51
すみません。
記述不足でした。
IDが同じ場合は

ID KUBUN KANE1 KANE2
----------------------------------
AA 10 1000 2000
AA 20 0 1000

このように表示したいのですが。
いっこさん
ベテラン
会議室デビュー日: 2003/07/03
投稿数: 67
投稿日時: 2005-03-25 13:41
引用:

未記入さんの書き込み (2005-03-25 09:51) より:
コード:
ID    KUBUN   KANE1   KANE2
----------------------------------
AA     10      1000    2000
AA     20         0    1000




並び替えがしたいということでしょうか?

http://www.mitene.or.jp/~rnk/TIPS_ORCL_SELECT2.htm

#質問以前にSQLに対する知識が…。
_________________
今川 美保(夏椰)
ぬし
会議室デビュー日: 2004/06/10
投稿数: 363
お住まい・勤務地: 神奈川県茅ヶ崎市
投稿日時: 2005-03-25 15:39
引用:

未記入さんの書き込み (2005-03-25 09:51) より:
すみません。
記述不足でした。
IDが同じ場合は

ID KUBUN KANE1 KANE2
----------------------------------
AA 10 1000 2000
AA 20 0 1000

このように表示したいのですが。



SELECT ID, KUBUN,KANE1, 0 AS KANE2 FROM テーブル1 で
ID KUBUN KANE1 KANE2
-----------------
AA 10 2000 0
AA 20 1000 0
AB 30 700 0
の結果が得られます。 同様に
SELECT ID, KUBUN,0 AS KANE1, KANE2 FROM テーブル2で
ID KUBUN KANE1 KANE2
-----------------
AA 30 0 2000
AB 20 0 1000
の結果が得られます。
これをUNION[ ALL]すると
ID KUBUN KANE1 KANE2
-----------------
AA 10 2000 0
AA 20 1000 0
AB 30 700 0
AA 30 0 2000
AB 20 0 1000
の結果が得られます。(ここまではおふぃすこまさんが説明済み)
で、これをIDとKUBUNでグルーピングして、KANE1,KANE2はSUMすれば
ご希望の結果が得られるのでは?

SELECT ID, KUBUN, SUM(KANE1), SUM(KANE2)
FROM
(
SELECT ID, KUBUN,KANE1, 0 AS KANE2 FROM テーブル1
UNION ALL
SELECT ID, KUBUN,0 AS KANE1, KANE2 FROM テーブル2
)
GROUP BY ID, KUBUN
1

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