- PR -

2つのテーブルからselect

1
投稿者投稿内容
未記入
会議室デビュー日: 2005/01/20
投稿数: 3
投稿日時: 2005-01-20 13:50
tableAには所属、ID、名前の3つのカラムがあります。
tableBには名前、住所、電話番号、年齢の4つのカラムがあります。

select ID, 名前 from tableA where 所属='A';

で、tableAからIDと名前を複数取得します。
取得した名前を元にtableBから住所を取得しようとする時、、
1つのSQLで実行する場合、

select tableA.ID, tableA.名前 tableB.住所 from tableA, tableB where 所属='A' and tableA.名前=tableB.名前;

で取得できると思います。
しかしこのSQLだと tableA.名前=tableB.名前 に当てはまらない
tableAのIDと名前は取得できません。
tableAとtableBの整合性が取れていない場合で、
tableAから 所属='A'の ID と 名前 は全て取得し、
tableA.名前=tableB.名前にあてはまる 住所 をtableBから取得したい場合、
1つのSQLで実現可能でしょうか?

DBはDB2です。
未記入
常連さん
会議室デビュー日: 2004/11/30
投稿数: 21
投稿日時: 2005-01-20 14:22
引用:

1つのSQLで実現可能でしょうか?


可能です。

引用:

しかしこのSQLだと tableA.名前=tableB.名前 に当てはまらない
tableAのIDと名前は取得できません。
tableAとtableBの整合性が取れていない場合で、
tableAから 所属='A'の ID と 名前 は全て取得し、
tableA.名前=tableB.名前にあてはまる 住所 をtableBから取得したい場合、


説明に曖昧な部分があるので質問します。
未記入さんが仰っている例ですと、
"「tableA.名前=tableB.名前」に該当するデータのうち、所属='A'であるもののみ、
それプラス、tableAの所属='A'に該当するデータ。"

or

"「tableA.名前=tableB.名前」に該当するデータで、所属に関しては制限しない(所属が'A'でも'B'でも何でも有り)、
それプラス、tableAの所属='A'に該当するデータ。"

の2パターンが考えられます。

おそらく前者でしょうが、念のため。
未記入
会議室デビュー日: 2005/01/20
投稿数: 3
投稿日時: 2005-01-20 14:26
返答ありがとうございます。
前者のほうです。
どうかご教授くださいますようよろしくお願い致します。
未記入
常連さん
会議室デビュー日: 2004/11/30
投稿数: 21
投稿日時: 2005-01-20 17:20
SELECT _A.ID, _A.名前, tableB.住所
FROM
(SELECT tableA.* FROM tableA where 所属='A') AS _A
LEFT OUTER JOIN
tableB
ON _A.名前 = tableB.名前;

これでいけるのではないですか?
未記入
会議室デビュー日: 2005/01/20
投稿数: 3
投稿日時: 2005-01-20 17:29
お名前は存じ上げませんが誠にありがとうございます。
心より感謝申し上げます。
完璧です。
非常に助かりました。
本当にありがとうございました。
1

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