Say, in Yesod/Persistent, I have models setup like so:
User ident Text password Text Maybe UniqueUser ident Question title Text asker UserId
How about:
questions <- runDB $ selectList [QuestionTitle !=. ""] [LimitTo 10] let askerIds = map (\(Entity _ q) -> questionAsker q) questions askers <- runDB $ selectList [UserId <-. askerIds] [] let questionsAndAskers = zip questions askers
That seems like it should hit the DB once for the users.