$rs = $schema->resultset('Person')->search( undef, { alias => 'mother', # alias columns in accordance with "from" from => [ { mother => 'person' }, [ [ { child => 'person' }, [ { father => 'person' }, { 'father.person_id' => 'child.father_id' } ] ], { 'mother.person_id' => 'child.mother_id' } ], ] }, ); # Equivalent SQL: # SELECT mother.* FROM person mother # JOIN ( # person child # JOIN person father # ON ( father.person_id = child.father_id ) # ) # ON ( mother.person_id = child.mother_id )