tryプログラミング、リモートワーク、田舎暮らし、音楽、etc.2010-08-12複雑なレポーティングクエリをUNIONを使ってリファクタリングするSQL現在かなり複雑なレポーティングクエリを構築しています。一貫性のない形式で保存されているデータをSQLできれいに整形して出力するレポートなのですが、データ形式のパターンが10種類ぐらいあるんです。JOINの乱れ撃ちになってきました。JOINを使ったのか、という意図が自分で分からなくなってきてしまい、このままじゃパターン10までとても到達できなさそうに思えてきました。CASE式が3つか4つネストした日には自分でも泣きそうになります。そこで一発SQLをあきらめて、UNIONでSQLを一から書き直す事にしました。イメージ的にはこんな感じです。JOINもほとんど出てこなくなります。その反面、各SELECT文でコードが若干重複してしまいます。共通する部分に変更が入ると10カ所をモレなく修正する必要があります。カラムを追加したり削除したりするときもすべてのSELECT文に手を加えないといけません。SQLも縦に長くなるので、始めて見た人は全体像をつかむのに苦労するかもしれません。いうデメリットがあるのでできればUNIONは使いたくなかったのですが、今回に限っては一発SQLよりもUNIONを使った方が得策だと判断しました。ある意味SQLのリファクタリングですね。SQLリファクタリングパターンみたいな本が出てきたら是非読んでみたいです。はてなブログPro株式会社ソニックガーデンで働くRubyプログラマ。2017年11月に「プロを目指す人のためのRuby入門」を出版。blog)はてなブログをはじめよう!JunichiItoさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。