【Perl】DBIx::Simple で副問い合わせや JOIN を使う

DBIx::Simple + SQL::Abstract を使うと簡単な SQL だと記述が簡潔にすむのだが、副問い合わせや JOIN を使い出すと途端に複雑になる。こういう場合は素直に素の SQL を書いた方がいいのだが、無理矢理にでも書くときはどうなるかやってみる。

WHERE 句にリテラル SQL を書く

文字列ではなく、文字列リファレンスを使う。例えば誕生日の「日」より「月」の方が数値として大きい(五月四日とか一〇月三日とか)人のリストを得たいとする。

SELECT id, name
FROM directory
WHERE MONTH(birthday) > DAY(birthday)

これを DBIx::Simple で表すとこうなる。

my $ds = DBIx::Simple->new($dbh);
my $rs = $sa->select('directory',
    ['id', 'name'],
    { 'MONTH(birthday)' => { '>' => \'DAY(birthday)' } },
    # { 'MONTH(birthday)' => \'> DAY(birthday)' },
);

Continue reading

【Perl】DBIx::Simple ノススメ

  1. はじめに
  2. DBIx::Simple + SQL::Abstract
  3. 単行取得メソッド
  4. 全行取得メソッド
  5. オブジェクトを返すメソッド

はじめに

Perl において DB に接続し、SQL を扱うモジュールはもちろん DBI モジュールな訳だが、これを格段に使いやすくしてくれる DBIx::Simple モジュールというのがある。

use DBIx::Simple; – 今日のCPANモジュール(跡地)
http://e8y.net/mag/009-dbix-simple/

このサイトのまとめが非常に分かり易い。例を挙げるとこんな感じ。

Continue reading