选择Esqueleto计数

时间:2016-07-15 17:30:08

标签: sql haskell yesod esqueleto

我有以下Entities

Group
  name Text

GroupUser
  user UserId
  group GroupId

我想做这样的查询:

select g.* /* Everything from g */
     , count(gu.id) groupUsersCount 
  from Group g
  left outer join GroupUser gu on gu.groupId = g.id
group by g.id

可以使用Esqueleto完成吗?

1 个答案:

答案 0 :(得分:4)

esqueleto docs for groupBy包含如何使用它的好例子。

此外,通过阅读Getting Started部分,您会看到几个查询示例,包括相当于table.*的内容:

do people <- select $
             from $ \person -> do
             return person

将两者放在一起意味着这样的事情应该起作用:

select $ from \(g `LeftOuterJoin` gh) -> do
  on (gu ^. GroupId ==. g ^. Id)
  groupBy (g ^. Id)
  return (g, countRows)