• ベストアンサー

JOINの方法について

毎度お世話になっております。 以下のテーブル1、テーブル2があります。 [テーブル1] CODE   1月  2月  A      10  10  C      30  30 [テーブル2] CODE   3月  4月  A      10  10  B      20  20  D      40  40 これを以下のようにくっつけたいのです。 [希望する結果] CODE   1月  2月  3月  4月  A      10  10  10  10  B             20  20  C      30  30  D             40  40 クエリ1(テーブル1 LEFT JOIN テーブル2とする)と、 クエリ2(テーブル2 LEFT JOIN テーブル1とする)を作り、 UNIONでくっつける方法を考え、希望した結果は得られましたが、 もっとスマートな方法(一つのクエリでできるような方法)が あればご教授ください。

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

  • ベストアンサー
  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.3

一応別解です。スマートかどうかは。。 SELECT CODE,MAX(1月),MAX(2月),MAX(3月),MAX(4月) FROM (SELECT CODE, 1月, 2月, null AS 3月, null AS 4月 FROM テーブル1 UNION ALL SELECT CODE, null, null, 3月, 4月 FROM テーブル2) tmp GROUP BY CODE

tokonoko
質問者

お礼

回答ありがとうございます。 今回もお世話になります。 NULLの列を作り、UNIONでくっつける方法もあるのですね。 勉強になります。 ありがとうございました。

その他の回答 (3)

  • keirika
  • ベストアンサー率42% (279/658)
回答No.4

SELECT テーブル1.CODE, テーブル1.[1月], テーブル1.[2月], テーブル2.[3月], テーブル2.[4月] FROM テーブル1 LEFT JOIN テーブル2 ON テーブル1.CODE = テーブル2.CODE UNION SELECT テーブル2.CODE, テーブル1.[1月], テーブル1.[2月], テーブル2.[3月], テーブル2.[4月] FROM テーブル1 RIGHT JOIN テーブル2 ON テーブル1.CODE = テーブル2.CODE でどうでしょう。

tokonoko
質問者

お礼

回答ありがとうございます。 UNIONクエリにSELECT文を纏めてしまうのですね。 RIGHT JOIN は今まで使用したことがありませんでしたが 勉強してみます。 ありがとうございました。

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.2

Accessならアップされた方法がベストです

tokonoko
質問者

お礼

回答ありがとうございます。 今回もお世話になります。 >Accessならアップされた方法がベストです 初心者・独学の私にはとても自信になりました。 ありがとうございました。

回答No.1

RDBMS名とバージョンは何ですか? FULL OUTER JOINで実現できますが、未実装のRDBMSがあります。

tokonoko
質問者

補足

回答ありがとうございます。 >RDBMS名とバージョンは何ですか? 失礼しました。ACCESS2003を使用しています。 よろしくお願いします。

関連するQ&A