
sql server 2008にて、joinの使い方について教えて下さい。
以下二つのテーブルがあります。
所属テーブル
名前 性別 所属
田中 男 経理部
田中 女 総務部
鈴木 女 経理部
佐藤 男 総務部
住所テーブル
名前 性別 住所
田中 男 杉並区
佐藤 男 中野区
鈴木 女 中央区
この二つのテーブルよりデータを取得し、以下のテーブルを作りたいです。
住所と所属テーブル
名前 性別 住所 所属
田中 男 杉並区 経理部
田中 女 null 総務部
鈴木 女 中央区 経理部
佐藤 男 中野区 総務部
但し、left join を使って、
所属テーブル.名前 = 住所テーブル.名前 and 所属テー ブル.性別 = 住所テーブル.性別
の条件を使用すると、女性の田中さんのデータが抽出されません(住所テーブルに登録されていないため、マッチングできていません)。どうすれば以上のテーブルが作られますか?
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
[所属テーブル]、[住所テーブル]の構成が良くないですがSQLを作るとしたら以下の通りです。
SELECT
T0.[名前],
T0.[性別],
T1.[住所],
T0.[所属]
FROM [所属テーブル] AS T0
LEFT JOIN [住所テーブル] AS T1
ON T0.[名前] = T1.[名前]
AND (T0.[性別] = T1.[性別] OR T0.[性別] IS NULL)
No.2
- 回答日時:
「所属テーブル」が主なら、「所属テーブル」が駆動表になるように書いてあげれば良いのでは?
質問に書いてある内容のみであれば以下で仕様を満たします。
select
a.名前,
a.性別,
b.住所,
a.所属,
from 所属テーブル AS a
left outer join 住所テーブル as b
on a.性別 = b.性別
and a.名前 = b.名前;
※同姓同名、同性、同部署を考慮すると社員Noなどをキーにしたほうがよいと思います。
No.1
- 回答日時:
Left Join の他にも Right Join, Inner Join, Full Join, Cross Join があります。
詳しくはこちらをどうぞ。
http://uchukamen.com/SQL2005/Select/Select.htm
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「テーブルに座って……」という...
-
【エクセル】データテーブルの...
-
下記、問題に対しての解答が以...
-
まるいテーブル 円い 丸い 漢字...
-
MACアドレス見えない
-
off of と fromの違いを教えて...
-
テーブルへの最終アクセス時刻(...
-
会社の飲み会の幹事になり、座...
-
男性と2人で飲食店に行きテーブ...
-
【MySQL】1対1でテーブルをあ...
-
L2SWはARPテーブルを持っている?
-
vers か a か(フランス語)
-
お金持ちのテーブル
-
ちょっとぐらいの時間なら里山...
-
[過去質問の続き]CREATE TEMPOR...
-
飲み会で、座敷orテーブルどち...
-
テーブルAにあって、テーブルB...
-
SQLです!!教えてください。
-
sqlplusで表示が変なので、出力...
-
SQL 複数テーブルのupdate
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「テーブルに座って……」という...
-
会社の飲み会の幹事になり、座...
-
外部キーだけのテーブル(主キ...
-
テーブルリンク リンク元を知...
-
オーダーの覚え方について
-
下記、問題に対しての解答が以...
-
飲み会で、座敷orテーブルどち...
-
アクセスのリンクテーブル一覧...
-
【エクセル】データテーブルの...
-
L2SWはARPテーブルを持っている?
-
面接のときテーブルが正面に。...
-
男性と2人で飲食店に行きテーブ...
-
UTF8のテーブルをODBCドライバ...
-
お金持ちのテーブル
-
1つのテーブルに同じデータを参...
-
テーブル名の前のドットの意味
-
複雑なSQL文について
-
データベースの接続に失敗して...
-
【PHP】SQL文のSUM関数で出力し...
-
更新されたテーブルを表示したい
おすすめ情報