需要有关Hibernate / SQL查询计数逻辑的帮助

时间:2010-03-23 15:24:28

标签: sql hibernate count

我有以下查询:

SELECT DISTINCT w.name, count(*) FROM widgets AS w
JOIN w.entity AS e
JOIN e.article AS a
JOIN a.document AS d
WHERE d.id IN (<document ids>)
GROUP BY w.name

问题是count(*)返回了widget-entity关联的数量。相反,我正在寻找的是每篇文章或文档的唯一小部件名称的数量。

以下是一个例子:

假设我有两个实体:catdog
我还有两个不同的小部件,它们具有相同的名称,foo。每个foo个窗口小部件与其中一个实体相关联(一个带有cat,另一个带有dog)。左侧catdog与文章animals相关联。
我希望此查询返回的计数仅为1(因为小部件名称foo仅在文章{{1}中找到一次}),而不是2。

我已尝试在count子句中放置其他内容,例如animals,但没有运气。

1 个答案:

答案 0 :(得分:1)

啊,啊,我想通了!

由于我在后端使用MSSQL,我可以这样做:count(DISTINCT a.id)