首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >[ groupBy ]Grails groupBy条目

[ groupBy ]Grails groupBy条目
EN

Stack Overflow用户
提问于 2011-09-13 13:30:09
回答 3查看 952关注 0票数 0

查询:我想知道如何在Grails.中获得域实体的最新条目。

问题域:

代码语言:javascript
复制
 class Parent {

    String name
    static hasMany = [children:Child]
}


class Child {

        String name
        Parent parent
        static belongsTo = [parent:Parent]

    }

数据模型

结果

我喜欢用id 4和7来记录。

哪里应该是“给我每一个父母的最后记录,孩子的名字就像'Rox%‘

到目前为止我已经试过了

代码语言:javascript
复制
SELECT
MAX(id)
FROM child
WHERE parent_id IN(SELECT
                     p.id
                   FROM parent AS p
                     JOIN child AS c
                       ON (c.parent_id = p.id
                           AND c.name LIKE 'Rox%'))
 GROUP BY parent_id 

提前谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-09-13 13:53:12

你的描述有点模糊,但我想这就是你想要的:

代码语言:javascript
复制
def idList = [1,4]
def c = Parent.createCriteria()
def result = c.list {
  'in'("id", idList)
  children {
    like("name","Rox%")
  }
  groupProperty("id")
}

编辑:

当我把答案打出来的时候,你改变了你的整个问题,把它改为匹配。

最终编辑:在编辑后的代码中向子程序{}添加排序,以获得所需的排序。

票数 0
EN

Stack Overflow用户

发布于 2011-09-14 09:40:51

代码语言:javascript
复制
           Parent.createCriteria().list(max:10,offset:0) {
                     'children' {
                                  like("name","Rox%")
                                  order("id","desc")
                                  groupProperty("id")
                                }


                     groupProperty("id")
              }

代码语言:javascript
复制
     Parent.createCriteria().list(max:10,offset:0) {

                          createAlias("children", "ac")
                          like("ac.name","Rox%")
                          order("ac.id","desc")
                          groupProperty("ac.id")

                     groupProperty("id")
              }

如果这两个标准查询都基于联接而彼此不同。有关在条件http://adhockery.blogspot.com/2009/06/querying-by-association-redux.html中进一步阅读联接的信息

票数 0
EN

Stack Overflow用户

发布于 2011-09-14 09:50:52

为此,您需要一个SQL窗口函数。在Oracle中,这类似于:

代码语言:javascript
复制
select max(id)
over(partition by parent_id, order by dateCreated)
from child
group by parent_id

在Hibernate/HQL中的单个查询中无法做到这一点。

(你也想得到第9张唱片,对吧?)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7402714

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档