里面的骨架数 select

Esqueleto count inside select

我有以下 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可以吗?

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)