- PR -

JET で FULL OUTER JOIN を実現

1
投稿者投稿内容
みぎもひだりも
会議室デビュー日: 2007/05/24
投稿数: 16
投稿日時: 2007-06-11 00:02
SQLの書き方について教えていただきたいことがあります。
稚拙な内容かもしれませんがご教授いただけますよう
お願いいたします。

先日、同一の構造を持つテーブル2つのとあるcolumnについて、
データ格納状態の比較を行うように言われました。
具体的には、


Table1.[0001] Table2.[0001]
------------------------------------
a a
a a
b c
d d

について、

0001 件数 0002  件数
----------------------------
a 2 a 2
b 1 b 0
c 0 c 1
d 1 d 1


と出力したいのです。

このために FULL OUTER JOIN という外部結合を使おうと
思ったのですが、Accessでは使用できない様子…。
また、left Join などでは、上記のCのrowが表示されずに
困っています。
以下、left joinで書いてみたクエリです。



select
y.*,b.*
from
(
select x.[0001] as out, count(*) as cnt
from Table1 as x
group by x.[0001]
) as y
left join
(
select a.[0002] as out2, count(*) as cnt2
from Table2 as a
group by a.[0002]
) as b

on y.out = b.out2



どなたか有効な方法を知っている方いましたら
教えていただけると幸いです。
よろしくお願いいたします。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2007-06-11 01:20
#微妙に会議室違いかもしれません。

完全外部結合はAccessでは使えないみたいですね。

Table2にあってTable1にないものが出てこないから困るってことですよね。

どちらかにあるものの一覧をselectするクエリ(unionとdistinct使うのかなあ)を作ってそれを一番左に置く、
Table1とTable2はそれに対してleft joinしていけばいいんじゃないでしょうか。
みぎもひだりも
会議室デビュー日: 2007/05/24
投稿数: 16
投稿日時: 2007-06-11 01:37
べるさん
ご教授ありがとうございます。
なるほど、そういう手段がありますね。
さっそく試行してみようと思います。



>#微妙に会議室違いかもしれません。

確かにそうでした(汗
ご指摘 + 場違いにも関わらずご回答いただけましたこと、
ありがとうございました!
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2007-06-11 10:36
引用:
>#微妙に会議室違いかもしれません。

確かにそうでした(汗
ご指摘 + 場違いにも関わらずご回答いただけましたこと、
ありがとうございました!

ぁ、ごめんなさい、、そんなにトピ違いじゃないですね、、
私が.NETの方だと勘違いしてました
1

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