Hibernate HqlL:Count和Group By包括零?

时间:2017-02-28 11:41:48

标签: java mysql sql hibernate hql

我有2个表:Claim和Type_Claim。 Claim在Type_Claim上有一个外部键。在Hibernate上,表示Claim表的Bean将TypeClaim作为属性。

  Claim

 ID    TYPE
 1      2
 2      2
 3      4
 4      1

  Type_Claim

 ID    Description
 1     "Hello"
 2     "Hi"
 3     "House"
 4     "Welcome"
 5     "Bye"

现在我做了这个查询:

SELECT tc.description, COUNT(*) 
FROM Claim claim"
LEFT OUTER JOIN claim.typeClaim tc  
GROUP BY tc.description ";

我想获得这个:

Description  Count
  "Hello"     1
  "Hi"        2
  "House"     0
  "Welcome"   1
  "Bye"       0

但我得到了这个:

Description  Count
  "Hello"     1
  "Hi"        2
  "Welcome"   1

如何在查询中包含0结果?我尝试了RIGHT JOIN,但我得到了相同的结果。

2 个答案:

答案 0 :(得分:1)

试试这个:

SELECT tc.description, count(cl.type)
FROM type_claim tc
LEFT OUTER JOIN claim cl ON
cl.type = tc.id
GROUP BY tc.description

它对我有用:

enter image description here

答案 1 :(得分:0)

聚合函数count()不会计算NULL值,因此您将获得零。

您必须使用LEFT JOIN而不是LEFT OUTER JOIN

如果您想了解有关外连接的更多信息,可以参考以下教程:http://sqlzoo.net/wiki/Using_Null