複雑なSQL3 サブクエリ前提カテゴリは上位のカテゴリとサブカテゴリが存在する。例えば、カテゴリには国語、数学、社会、理科、英語があり、理科カテゴリのサブカテゴリとして物理、化学、地学、生物があるような。カテゴリは2段階までで、サブサブカテゴリは存在しないとする。 categoryテーブル以下のようなカラムを持つ。category_idとparent_category_idが等しい場合、それは上位のカテゴリである。
取得したいデータ以上の条件で、あるカテゴリ(ここではカテゴリID20)と同じペアレントIDを持つカテゴリをすべて取得する。 例:
SQLSQLは以下の通り。 select category_id, category_name
from category
where
parent_category_id =
(select parent_category_id from category
where category_id = 20);
order by category_id
DBICDBICのコードは以下の通り。 my $subq = sprintf " = (select parent_category_id from category where category_id = %d)",
20;
$c_rs = $c_rs->search({
parent_category_id => ?$subq
});
$c_rs = $c_rs->search_literal(
'category_id <> parent_category_id',
{order_by => 'category_id'});
ポイント
|
|