@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

INNERJOINについて

1
投稿者投稿内容
戦国おた
会議室デビュー日: 2007/01/10
投稿数: 6
投稿日時: 2007-11-06 16:49
お世話になります。

SELECT
A_TBL.KEY,
A_TBL.NAME,
B_TBL.NAME2
FROM A_TBL

LEFT JOIN
B_TBL
ON
A_TBL.KEY = B_TBL.KEY

UNION
SELECT
A_TBL.KEY,
A_TBL.NAME,
C_TBL.NAME2
FROM A_TBL

LEFT JOIN
C_TBL
ON
A_TBL.KEY = C_TBL.KEY


上記のようなSQLを組みました。

今回やりたいことは、B_TBLとC_TBLに該当データが無くても、A_TBLのものは出したいのです。
具体的には、

A_TBL
KEY | NAME |
-------------
1 | AAA |
2 | BBB |
3 | CCC |

B_TBL
KEY | NAME2 |
-------------
1 | ZZZ  |

C_TBL
KEY | NAME2 |
-------------
2 | YYY |

上記のようなケースで、

結果1
KEY | NAME | NAME2 |
---------------------
1 | AAA | ZZZ |
2 | BBB | YYY |
3 | CCC | NULL |

のような感じで、出したいのです。
どのようにすればよいか、教えてください。

長くなりましたが、よろしくお願いします。
かめたろ
ぬし
会議室デビュー日: 2003/03/20
投稿数: 255
投稿日時: 2007-11-06 17:07
B_TBLとC_TBLを一つのテーブルとみなしてしまえばよいのではないでしょうか。
多分こんなイメージ。
コード:
SELECT 
  A_TBL.KEY, 
  A_TBL.NAME, 
  BC_TBL.NAME2 
FROM A_TBL 
LEFT JOIN (
  SELECT KEY, NAME2 FROM B_TBL
  UNION
  SELECT KEY, NAME2 FROM C_TBL 
  ) BC_TBL
ON A_TBL.KEY = BC_TBL.KEY 

戦国おた
会議室デビュー日: 2007/01/10
投稿数: 6
投稿日時: 2007-11-06 21:21
かめたろさま

お返事ありがとうございます。

1つのテーブルとみなすことで、無事望みどおりの結果を得ることができました。
本当にありがとうございました!!
1

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