業務でPostgreSQLを数年使っていますが、
いまだに完全外部結合(full outer join)を使ったことがありません。
こんな時に使うと便利、こんな要求があり使いました等ありましたら教えてください。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答5件
0
ベストアンサー
他の回答者様も言及してますが、
当方としてもFULL JOINを利用する機会は数えるほど出て来るかどうかといった印象です。
またUNION、LEFT JOIN、RIGHT JOINの合わせ技で、
同じようなデータの抜き方は可能なので、必ず必要とまでも言えません。
(現にFULL JOINをサポートしないDBMSも存在しますし。ただ完全外部結合は標準SQLには定義されているため、実装するDBMSの方が多いと思われます。)
#FULL JOINのメリット
ではFULL JOINのメリットは何か?
当方の私見も入ってますが結局の所は、
- コードの記述量の削減
- 意図の明示化(完全外部結合知ってたら意図がすぐに解る)
この2点につきるのではないかと思います。
(CROSS JOINに関しては直積ですよ、という意図を明示するためだけの書き方なのかなと勝手に思ってます。)
そのため用意できるなら、
用意してくれていた方が都合が良い、というのが当方の見解です。
(くどいですが標準SQLには定義されてるので・・・)
少し脱線しますが、SQLも簡潔に書くための実装(ウィンドウ関数、CTE、行値構成子など)のサポートを着実に進めてきているので、
これらの簡潔に書くための手段を知っておいて損はないかと思います。
#どういった場面で使用する?
当方も利用機会は少ないので、
あくまで一例として何か挙げるなら、
予算・実績比較レポートの作成などでは利用されやすいのではないかなと思います。
(予算と実績テーブルが分かれている場合)
予実比較の場合だと、
予算のたてられていない実績の情報、
予算はたてられたけど実績がまだない情報のどちらも一覧で出して欲しいというケースも想定されるので、
そのような場面ではFULL JOINも有力な選択肢になり得ると思います。
ご参考までに・・・。
投稿2016/11/28 10:46
編集2016/11/28 10:51総合スコア1636
0
前に全てのトランザクションデータとマスタデータが「年、月、バージョン」を持っているシステムがあり、
トランザクションデータとマスタデータを結合するときは同じ「年、月、バージョン」があればそれで結合し、
同じ「年、月、バージョン」がない場合は直近の過去の「年、月、バージョン」で結合し、
過去にない場合は直近の未来の「年、月、バージョン」で結合する仕様だったのでFULL JOIN使いまくりでした。
投稿2016/12/16 15:24
総合スコア12
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
実際に FULL OUTER JOIN を使う機会は少ないようですが、テーブルを外部結合する の実例を比較すると2つのテーブルのどちらにキーがあってもSELECTされるので、こんな使い方もあるよ、って理解できるでしょう。
投稿2016/11/26 20:28
総合スコア16417
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。