$rs = $db->resultset('Comment')->search({ 'country.language_id' => \'= country_2.language_id', # literal SQL }, { prefetch => [ { user => { country => 'language' } }, { artwork => { artist => 'country' } }, ], }); while ( my $comment = $rs->next ) { say sprintf('%s : %s said about "%s" (%s) : "%s"', $comment->user->country->language->name, $comment->user->name, $comment->artwork->name, $comment->artwork->artist->name, $comment->text, ); }