- - PR -
2つのテーブルからselect
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 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です。 | ||||||||
|
投稿日時: 2005-01-20 14:22
可能です。
説明に曖昧な部分があるので質問します。 未記入さんが仰っている例ですと、 "「tableA.名前=tableB.名前」に該当するデータのうち、所属='A'であるもののみ、 それプラス、tableAの所属='A'に該当するデータ。" or "「tableA.名前=tableB.名前」に該当するデータで、所属に関しては制限しない(所属が'A'でも'B'でも何でも有り)、 それプラス、tableAの所属='A'に該当するデータ。" の2パターンが考えられます。 おそらく前者でしょうが、念のため。 | ||||||||
|
投稿日時: 2005-01-20 14:26
返答ありがとうございます。
前者のほうです。 どうかご教授くださいますようよろしくお願い致します。 | ||||||||
|
投稿日時: 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 17:29
お名前は存じ上げませんが誠にありがとうございます。
心より感謝申し上げます。 完璧です。 非常に助かりました。 本当にありがとうございました。 |
1