Class::DBI::Sweet::PieでCOUNT DISTINCTできない?
CPANに
・Class::DBI::Plugin::AggregateFunction-0.01
・Class::DBI::Sweet::Pie-0.03
がアップされたのでさっそくいじってみる。
非常に便利だ。次から使おう。
それはそうと作者のブログでCOUNT DISTINCTもサポートしてるポ的なことが書いてあったので試してみた。
package HogeTable; use base qw/Class::DBI/; use Class::DBI::Plugin::AggregateFunction; __PACKAGE__->table('btest'); __PACKAGE__->columns('All' => qw/id name/); __PACKAGE__->mk_aggregate_function('count'); print HogeTable->count('distinct id');
おお、COUNT DISTINCTでけた!
で、次にClass::DBI::Sweet::Pieでやってみたんですがエラー発生。
DBD::Pg::st execute failed: ERROR: syntax error at or near "id" at character 73 [for Statement " SELECT count( me.distinct id ) FROM btest me WHERE 1=1 "] at F:/Perl/site/lib/DBIx/ContextualFetch.pm line 52.
カラムの先頭にmeが勝手に付くので「me.distict id」みたいになってしまいCOUNT DISTINCTができない・・・
まぁでもこれはSweetの問題なんで仕方ないのかな。
何はともあれ今までみたいにset_sqlしてSQL::Abstract使ってごにょごにょやってたのをmk_aggregate_functionを呼ぶだけで出来るようになるのでかなり便利だということです。
Class::DBI::Sweet::Pie-0.04にバージョンアップされているようです。
COUNT DISTINCTできるようになってます。GJ!