mySQL查询计算每个用户的案例

时间:2013-06-03 02:21:57

标签: mysql count inner-join

嘿,我有以下问题:

SELECT UA.Org, UA.AccNum, UA.Category, COUNT(UC.CaseNum) AS totalCases
FROM userAccount UA
INNER JOIN userCase UC ON UA.AccNum = UC.Userlink 
ORDER BY UA.AccNum, UC.QNum ASC
LIMIT 1, 15;

我希望得到这样的东西:

  org      | Account  | Category   | totalCases
  ---------------------------------------------
  blah 1   | 2883513  | Blah here 1| 2
  blah 2   | 2998619  | Blah here 2| 3
  blah 3   | 3063328  | Blah here 3| 1
 etc etc...

但是,当我运行该查询时,我得到的是0条记录。以 COUNT(UC.CaseNum)AS totalCases 生成我的15行,就像正常一样。

用户在进行查询时可能有0个或更多个案例。我确定我需要 GROUPBY ,但没有数据首先出现,最好不要继续添加到我的非工作查询。

没有totalCases的数据如下所示:

org      | Account  | Category   | Case
-------------------------------------------
blah 1   | 2883513  | Blah here 1| 5691245
blah 1   | 2883513  | Blah here 1| 8952214
blah 2   | 2998619  | Blah here 2| 1478523
blah 2   | 2998619  | Blah here 2| 9965821
blah 2   | 2998619  | Blah here 2| 1028745
blah 3   | 3063328  | Blah here 3| 3605487
etc etc...

任何帮助都会很棒!

3 个答案:

答案 0 :(得分:1)

您获得0行的原因是因为您使用的是聚合函数,然后将结果限制为从second row开始

您的查询应该像

SELECT UA.Org, UA.AccNum, UA.Category, COUNT(UC.CaseNum) AS totalCases
FROM userAccount UA
INNER JOIN userCase UC ON UA.AccNum = UC.Userlink 
GROUP BY UA.AccNum, UA.Org, UA.Category
ORDER BY UA.AccNum, UC.QNum ASC

然后,您可以limit上述查询的结果

由于您在此处使用INNER JOIN,结果将不包含具有0测试用例的用户,您可以使用left join

更改此行为

答案 1 :(得分:0)

尝试以下

SELECT UA.Org, UA.AccNum, UA.Category, COUNT(UC.CaseNum) AS totalCases
FROM userAccount UA
INNER JOIN userCase UC ON UA.AccNum = UC.Userlink 
GROUP BY UA.Org, UA.AccNum, UA.Category
ORDER BY UA.AccNum, UC.QNum ASC

答案 2 :(得分:0)

我猜测userAccountuserCase表之间的关系是one-to-many。一个userCase可能有很多userAccount条记录。

试试这个:

SELECT UA.Org, UA.AccNum, UA.Category, COUNT(UC.CaseNum) AS totalCases
FROM userAccount UA
INNER JOIN userCase UC ON UA.AccNum = UC.Userlink
GROUP BY UA.AccNum
ORDER BY UA.AccNum, UC.QNum ASC
LIMIT 1, 15;

添加了GROUP BY UA.AccNum,如果您有Id列,请更好地使用该列。