フリーランス チャレンジ!!

読者です 読者をやめる 読者になる 読者になる

フリーランス チャレンジ!!

週休4日制に俺はなる!

【SQL】外部結合で1つのテーブルキーを複数のテーブルで条件として使用する方法

SQL 技術

みなさん、コウタロウです!!

 

今日はタイトルについて。

 

 

1つのテーブルのキーを複数のテーブルで条件としたい

みなさん、こんなことで悩んだことってないですか?

 

親テーブルと子テーブルをあるキーで結合してさらに、親テーブルと孫テーブルをキーで結合して表示するパターン。

 

文字だけだとピンとこないので例を示します。

f:id:ksakae1216:20170307164124j:plain

 

親テーブル.id子テーブル.oya_idを結合し、更に

親テーブル.name孫テーブル.oya_nameを結合。

 

どうすればいいのかな〜。

副問い合せすればいいのかな〜。

 

とか、どのようにすればうまくいくか、考えちゃいますよね!!

 

最近調べたので、備忘録も含めて解決方法を公開します。

 

解決方法

方法は結構単純で、1つずつ外部結合するだけです。

 

早速SQLから見ていきましょう!!

gist0449a7e1b036712177a74b12afa4ed84

 

まずは、親テーブルのmasterテーブルと子テーブルのko_masterテーブルを外部結合します。(6〜9行目)

「ON」以降に、結合したいキーを記載します。

例では1つだけですが、ANDを記載し、複数のキーを結合するのも可能です。

 

これで親テーブルと子テーブルが結合できたので次は、孫テーブルの番です。

単純に外部結合することで親テーブルのmasterテーブルと孫テーブルのmago_masterテーブルを結合することが可能です。(10〜12行目)

 

SQL結果

SQLの結果は以下の通りです。

f:id:ksakae1216:20170307170934j:plain

 

小さくってすいません。。。

1行目を見ると、キー”AAA”で親テーブルと子テーブルが結合され、キー"tokyo"で親テーブルと孫テーブルも結合されデータが表示されてます!!

 

最後に

如何でしたか?

 

SQLって方法知ってると瞬殺ですが、知らないと時間かかりますよね!

 

私は忘れっぽいのでどこかの現場でこの事象で悩んだ時は、自分のブログを見ようと思います。

そもそも、この記事を書いたことすら忘れそうな恐れもありますが・・・