ログ日記

作業ログと日記とメモ

外部結合のときのNULL値

外部結合の時のNULL値を他の値に置き換えることって出来たっけ?RDBMSPostgreSQL


部署情報に支払い済み給料合計を加えた表示の例

      dept      salary       emp
----------   ---------   -------
   dept_id   salary_id    emp_id
 dept_name      emp_id   dept_id
       ...      salary       ...
                   ...
create view dept_ex as 
select *, case
            when salary_sum is null then 0
            else salary_sum
          end as dept_salary
from dept left outer join(
  select dept_id, sum(salary) as salary_sum
  from salary join emp using(emp_id)
  group by dept_id
) as foo using(dept_id);

分からなかったのでcase文を使うことにした。
この例だと、外部結合時のNULLを自動的に0に置き換えたい。


フレームワークを使ってるとビューを多用するようになってきた。
取り敢えずビューさえ定義しておけばフレームワークが単一の表と同じように扱ってくれる。
これは便利だ。
以前某所でストアドプロシージャを使う使わないの議論があったけど、$dao->save($vo) の決まり文句を使うためにはSQLの関数で一気にデータを更新するのもアリかも。