Hello
There is an interesting thread on the Catalyst mailing list actually that discuss
how to use controllers and models and what are the best practices with Catalyst
That leads me to suggest that the controller is not the most appropriate place to store the code you are talking about.
So now coming back to the code itself, on the sql side I think a join on the same table (with aliases) would be more appropriate ... so that leads as fmerges suggested to implementing joins in DBIC which is supported.
Good luck.
Eriam