SQL – 計算する時はNULLに注意!

NULLのふるまい 計算式の値にNULLが含まれている場合、計算結果は必ずNULLとなってしまう。なので、SUMなどで集計する場合、カラムにNULLが含まれていないかは要注意! NULLの計算 NULLが想定される場合は、coalesce関数を用いる。COALESCE( [値], [第一引数がNULLの場合に使う値] ) というように引数を渡す。 実装例(SUM関数との併用) SELECT SUM( COALESCE(price, 0)

Rails – 複雑なSQL文でモデルインスタンスを抽出する

やりたいこと モデルインスタンスの形式を保持したまま、複雑なSQL文でデータを抽出してくる(抽出後、ransackなどのメソッドを適用したいため)。 できないやりかた find_by_sql モデル.find_by_sql(SQL文)で直書きできるが、返り値がハッシュとなるためモデルインスタンスのメソッドが使えなくなる。 ActiveRecord::Base.connection.select_all 以下のように、select_all