嘿,我有以下查询:
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条记录。将计数(UC.CaseNum)作为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...任何帮助都会很好!
发布于 2013-06-03 02:26:54
获取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-03 02:28:36
尝试以下几点
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-03 02:35:40
我猜userAccount和userCase表之间的关系是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;按UA.AccNum添加组,如果有Id列,最好使用该列。
https://stackoverflow.com/questions/16889245
复制相似问题