[Perl] DBIx::Skinny::SQL で "JOIN table USING (column)"
なんか、いつもイレギュラーなことやってない?ばかなのしぬの?
とか思いつつ、データベースの激しい都合上
my $rs = $my_skinny->resultset; # とある $rs さんの旅 ... $rs->add_join('table t' => [ { type => 'inner', table => 'join j', condition => 't.join_key = j.join_key AND t.join_num = j.join_num' } ] ); $sql->as_sql; # => FROM table t JOIN join j ON t.join_key = j.join_key AND t.join_num = j.join_num
とか毎回書いていたのですが、いい加減めんどくさくなっtごにょごにょ。。。*1
設計がそもそもぷぎゃーなんじゃないの?とか言われそうですが、イロイロと都合がごにょごにょ。。。
そんなわけで、結合条件に USING を使った SQL 文を生成できるよう、DBIx::Skinny::SQL をちょっと変更してみました。
作った DBIx::Skinny::SQL の Diff はこんな感じ。
これで、以下のようにかけるようになりました。
my $rs = $my_skinny->resultset; # とある $rs さんの旅 ... $rs->add_join('table t' => [ { type => 'inner', table => 'join j', condition => [qw/ join_key join_num /] # ArrayRef を渡す } ] ); $sql->as_sql; # => FROM table t JOIN join j USING (join_key, join_num)
なんてニッチなんでしょう。おわり。
とりあえずそんな感じで、ひとまずわーい。
あ PostgreSQL 特有だと思いますが "DISTINCT ON" 句も生成できるようにしたいなぁ。
とか、またイレギュラーなことを考えています。。。
いっそ DBIx::Skinny::SQL::Pg とか作ればいいんですかね。ないですね。
そもそも ぽすぐれ とか ぷぎゃー は なし だよ!
ついき
本家に取り込んでいただきました。
ありがとうございました><
*1:実際はもっと結合条件があったり