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 
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...

任何帮助都会很棒!

4

3 回答 3

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

于 2013-06-03T02:26:54.273 回答
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
于 2013-06-03T02:28:36.467 回答
0

我猜userAccountuserCasetable 之间的关系是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列,最好使用该列。

于 2013-06-03T02:35:40.843 回答