重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

sql server 2008にて、joinの使い方について教えて下さい。
以下二つのテーブルがあります。

所属テーブル
名前 性別 所属
田中 男 経理部
田中 女 総務部
鈴木 女 経理部
佐藤 男 総務部

住所テーブル
名前 性別 住所
田中 男 杉並区
佐藤 男 中野区
鈴木 女 中央区

この二つのテーブルよりデータを取得し、以下のテーブルを作りたいです。

住所と所属テーブル
名前 性別 住所 所属
田中 男 杉並区 経理部
田中 女 null 総務部
鈴木 女 中央区 経理部
佐藤 男 中野区 総務部

但し、left join を使って、
所属テーブル.名前 = 住所テーブル.名前 and 所属テー ブル.性別 = 住所テーブル.性別
の条件を使用すると、女性の田中さんのデータが抽出されません(住所テーブルに登録されていないため、マッチングできていません)。どうすれば以上のテーブルが作られますか?

A 回答 (3件)

[所属テーブル]、[住所テーブル]の構成が良くないですがSQLを作るとしたら以下の通りです。



SELECT
T0.[名前],
T0.[性別],
T1.[住所],
T0.[所属]
FROM [所属テーブル] AS T0
LEFT JOIN [住所テーブル] AS T1
ON T0.[名前] = T1.[名前]
AND (T0.[性別] = T1.[性別] OR T0.[性別] IS NULL)
    • good
    • 0

「所属テーブル」が主なら、「所属テーブル」が駆動表になるように書いてあげれば良いのでは?



質問に書いてある内容のみであれば以下で仕様を満たします。

select
a.名前,
a.性別,
b.住所,
a.所属,
from 所属テーブル AS a
left outer join 住所テーブル as b
on a.性別 = b.性別
and a.名前 = b.名前;

※同姓同名、同性、同部署を考慮すると社員Noなどをキーにしたほうがよいと思います。
    • good
    • 0

Left Join の他にも Right Join, Inner Join, Full Join, Cross Join があります。



詳しくはこちらをどうぞ。

http://uchukamen.com/SQL2005/Select/Select.htm
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す