人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

perlのDBIx::ClassでのLEFT JOINについて教えてください。

テーブル間関係の定義ならbelongs_toでいけるようなのですが、LEFT JOIN ON ...の部分に単テーブル条件を含ませる方法が判りません。

つまり、例えば顧客の購入していない商品を商品マスタから抽出する場合、SQLですと

SELECT master.*
FROM master
LEFT JOIN purchase
ON master.id = purchase.item_id AND
purchase.user_id = 12345
WHERE purchase.user_id IS NULL

で一発で検索できますが、DBIx::Classの場合、LEFT JOIN ON ...中の、

master.id = purchase.item_id

のような条件はbelongs_toで設定できるようですが、

purchase.user_id = 12345

のような条件がどうやって設定すればいいのか判りません。

上記をWHERE句に移すと、

SELECT master.*
FROM master
LEFT JOIN purchase
ON master.id = purchase.item_id
WHERE purchase.user_id = 12345 AND purchase.user_id IS NULL

また別の意味になってしまう(検索結果なしになる)ので、困っています。

DBIx::Classで上記のようなSQLを打つ方法を教えていただければ幸いです。


●質問者: projection
●カテゴリ:コンピュータ インターネット
✍キーワード:DBIx::Class ON Perl SELECT SQL
○ 状態 :キャンセル
└ 回答数 : 2/2件

▽最新の回答へ

1 ● sterwars22

left join

http://www.searchai.jp/lesson/perl.php?page=20


2 ● ken33jp

設計ミスです。小手先の解決策はないです。

http://q.hatena.ne.jp/answer

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ