my $crs = MyDBClass->resultset("Customer"); my $rs = $crs->search( undef, { "+select" => [ $crs->search( { "you.id" => { '=' => \'me.id' }}, { join => { "boxes" => "devices" }, "+select" => ["devices.id"], +as =>["device_id"], alias => 'you'})->count_rs->as_query, ], "+as" => [ "device_count" , ], } ); #### (SELECT me.id, me.bu_id, me.description, me.contact_name, me.contact_phone, me.contact_email, me.creation_ts, (SELECT COUNT( * ) FROM customer you INNER JOIN box boxes ON boxes.customer_id = you.id INNER JOIN device devices ON devices.box_id = boxes.id WHERE ( you.id = me.id )) FROM customer me)