2010-03-23 95 views
2

我有以下查询:需要帮助的休眠/ SQL查询计数逻辑单元

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(*)返回窗口小部件,实体的关联数。相反,我要查找的是每个文章或文档中的唯一控件名称的数量。

下面是一个例子:

比方说,我有两个实体:catdog
我也有两个不同的小部件共享相同的名称foo
foo小部件中的每一个都与其中一个实体相关联(其中一个为cat,另一个为dog)。
catdog都与文章animals相关联。
我想通过此查询返回的计数只有1(因为小部件名称foo文章animals中只发现一次),而不是2

,我试图把其他的东西计数子句中,像count(d.id),没有运气。

回答

1

啊哈,我明白了!由于我在后端使用MSSQL,我可以这样做:count(DISTINCT a.id)