みなさん、コウタロウです!!
今日はタイトルについて。
1つのテーブルのキーを複数のテーブルで条件としたい
みなさん、こんなことで悩んだことってないですか?
親テーブルと子テーブルをあるキーで結合してさらに、親テーブルと孫テーブルをキーで結合して表示するパターン。
文字だけだとピンとこないので例を示します。
親テーブル.idと子テーブル.oya_idを結合し、更に
親テーブル.nameと孫テーブル.oya_nameを結合。
どうすればいいのかな〜。
副問い合せすればいいのかな〜。
とか、どのようにすればうまくいくか、考えちゃいますよね!!
最近調べたので、備忘録も含めて解決方法を公開します。
解決方法
方法は結構単純で、1つずつ外部結合するだけです。
早速SQLから見ていきましょう!!
gist0449a7e1b036712177a74b12afa4ed84
まずは、親テーブルのmasterテーブルと子テーブルのko_masterテーブルを外部結合します。(6〜9行目)
「ON」以降に、結合したいキーを記載します。
例では1つだけですが、ANDを記載し、複数のキーを結合するのも可能です。
これで親テーブルと子テーブルが結合できたので次は、孫テーブルの番です。
単純に外部結合することで親テーブルのmasterテーブルと孫テーブルのmago_masterテーブルを結合することが可能です。(10〜12行目)
SQL結果
SQLの結果は以下の通りです。
小さくってすいません。。。
1行目を見ると、キー”AAA”で親テーブルと子テーブルが結合され、キー”tokyo”で親テーブルと孫テーブルも結合されデータが表示されてます!!
最後に
如何でしたか?
SQLって方法知ってると瞬殺ですが、知らないと時間かかりますよね!
私は忘れっぽいのでどこかの現場でこの事象で悩んだ時は、自分のブログを見ようと思います。
そもそも、この記事を書いたことすら忘れそうな恐れもありますが・・・
コメント