如何使用where子句获取子表中的记录计数

时间:2013-08-26 21:02:42

标签: grails gorm

如果我有两个表格域colorshade颜色为hasMany [shades: Shade]且颜色为belongsTo [color: Color]

我有以下数据:

ID     color_name    color_type
----    --------      ----------
22       RED           CRAYON
23       GREEN         PAINT
45       GREY          CRAYON

ID     color_id       shade_name     is_available
---    ----------     -------------   ----------
2      22              DARK           false
3      22              LIGHT          true
4      23              DARK           true
5      23              LIGHT          true
6      45              DARK           false
7      45              LIGHT          false

如何构建标准以找出X阴影不可用的颜色数量?其中X是不可用的阴影数量?

所以,基于上面的例子:

如果我通过1,我会回来的:

ID     color_name    color_type
----    --------      ----------
22       RED           CRAYON

但是,如果我通过2,我会回来的:

ID     color_name    color_type
----    --------      ----------
45       GREY          CRAYON

1 个答案:

答案 0 :(得分:1)

可以通过HQL这样做。不确定如何使用条件查询

Shade.executeQuery("Select distinct s.color \
                    from Shade s where \
                    (select count(distinct s2.name) \
                           from Shade s2 \
                           where s2.isAvailable = false \
                           and s2.color = s.color) = :numb", 
                    [numb: yourvalhere])