
初歩的な質問で申し訳ありません。
以下のような3つのテーブルを結合する際に、ある1つのテーブルの内容を全て
表示したまま、その他のテーブルの内容を付加するような出力をしたいと考えています。
考え方としては、内部結合という事で、INNER JOIN を使うというような事は想像できますが、
3つのテーブルではそのような事が可能でしょうか?
最終的には出力想定イメージのような形としたいと考えています。
[口座]
銀行No 顧客No 残高
-------------------
B001 C001 30000
B001 C003 10000
B002 C001 40000
B002 C002 10000
B002 C004 50000
B003 C004 60000
[銀行]
銀行No 銀行名
---------------
B001 foo銀行
B002 bar銀行
[顧客]
顧客No 顧客名
--------------
C001 阿部
C002 村上
C003 渡辺
C004 越智
【出力想定イメージ】
銀行No 銀行名 顧客No 顧客名 残高
-------------------
B001 foo銀行 C001 安部 30000
B001 foo銀行 C003 渡辺 10000
B002 bar銀行 C001 安部 40000
B002 bar銀行 C002 村上 10000
B002 bar銀行 C004 越智 50000
B003 C004 越智 60000
※ 口座情報に対し、銀行情報や顧客情報がないケースも存在します。
教えて下さい。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
顧客情報が重複しているというなら、SQLを副問い合わせと外部結合の組み合わせにすれば何とかなります。
select A.銀行No, B.銀行名, A.顧客No, C.顧客名, A.残高
from 口座 as A
left outer join 銀行 as B on B.銀行No = A.銀行No
left outer join (select distinct 顧客No, 顧客名 from 顧客) as C on C.顧客No = A.顧客No
しかしそもそもテーブルの正規化が出来ていないという、関係データベースの基礎がおろそかになっているように思われます。
素直に重複が発生しないように、テーブル設計を見直してはいかがでしょうか。
Ogre7077様、ご回答ありがとうございます。
返事が遅くなり、申し訳ありません。
教えて頂いたように記述したところ、問題なく実現できました。
ありがとうございました!
No.1
- 回答日時:
口座を中心として、他の二つを外部結合する形になるかと思います
銀行情報や顧客情報が無い場合は、銀行名や顧客名が NULL となりますのでご注意ください
select A.銀行No, B.銀行名, A.顧客No, C.顧客名, A.残高
from 口座 as A
left outer join 銀行 as B on B.銀行No = A.銀行No
left outer join 顧客 as C on C.顧客No = A.顧客No
この回答への補足
Ogre7077様、ご回答ありがとうございます。
これに関してもう1点だけ教えて下さい。
例題として間違っていますが、顧客データが重複していた場合、教えて頂いたSQLだと
たとえ口座を中心とした場合でも、口座の情報が重複して出力されてしまうかと思われます。
顧客の情報をユニークにしてから結合させるにはどのような記述にすれば良いでしょうか、、、
初歩的な質問で申し訳ありません。
教えて下さい。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
orace SQL文のエラー(ORA-0092...
-
Oracleですがsqlで質問です。 ...
-
データベースのカラムの型がCHA...
-
sqlで質問です。 aテーブルとb...
-
batファイルでのSQL(oracle)...
-
バッチファイルで複数フォルダ...
-
続.ORACLEのSELECTのソートに...
-
オラクルゴールドについて
-
SQLで日付+時間で絞り込みたい
-
SQLについて教えてください
-
Oracleデータベースの暗号化
-
副問合せにLIKE文を使う方法は...
-
Googleで、よく行くお店の口コ...
-
osqleditについて
-
Oracle 動的SQLでエラー
-
sqlplusで接続できない
-
64bit端末でのOLEDB接続に関して
-
10営業日前の日付を取得したい...
-
オラクル12C_SQLPlusで実行す...
-
sqlで質問です。 Aテーブルは店...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
副問合せにLIKE文を使う方法は...
-
update文で質問です。 下記の条...
-
batファイルでのSQL(oracle)...
-
osqleditについて
-
ORA-14452について
-
データベースのカラムの型がCHA...
-
バッチファイルで複数フォルダ...
-
オラクル12C_SQLPlusで実行す...
-
続.ORACLEのSELECTのソートに...
-
orace SQL文のエラー(ORA-0092...
-
SQLについて教えて下さい。 主...
-
sqlで質問です。 aテーブルとb...
-
64bit端末でのOLEDB接続に関して
-
SQL ブレーク処理について
-
PL/SQLでフェッチでNULLの項目...
-
質問です。 下記のテーブルとデ...
-
videopad 無料版 アンインストール
-
SQLの中上級者へのレベルアップ...
-
Object Browser相関タブの見方...
-
SQLで今日の日付でWhereしたい
おすすめ情報