我目前有两个表,一个包含预算信息,另一个表用于预算中的每一行。我正在尝试从预算表中选择信息,并获取每个预算中的行数。我当前的SQL是:
SELECT actual.ActualID, DateReceived, DateStart, DateEnd, ActualTotal, count(SchActualID) as NumberOfSch
FROM actual
LEFT JOIN schactual on actual.ActualID = schactual.ActualID
where CentreID = 29 order by DateEnd DESC
我认为它按预期工作,但似乎它没有计算正确的值。 schactual表目前有4行,其中只有一行包含ActualID 29,但是如果我运行上面的查询,NumberOfSch就是3.我在这里做错了什么想法?
示例输入: centreID = 29
或者
centreID = 30
示例输出: 假设我运行上面的查询,它在实际表中有一个预算,在schActual表中有一个计划。预期的输出是:
ActualID | DateReceived | DateStart | DateEnd | ActualTotal | NumberOfSch
24 | 2014-11-02 | 2013-03-31 | 2014-03-31 | 1000 | 1
当前输出为:
ActualID | DateReceived | DateStart | DateEnd | ActualTotal | NumberOfSch
24 | 2014-11-02 | 2013-03-31 | 2014-03-31 | 1000 |的 2
表结构如下所示: 实际:
SchActual:
答案 0 :(得分:1)
我认为你只需要将group by添加到该查询中,你就可以了。
以下是您的部分查询以简化解决方案:
<强>已更新强>:
SELECT actual.actualid, count(schactualid) AS NumberOfSch
FROM actual
LEFT JOIN schactual on actual.actualid = schactual.actualid
WHERE centreid = 29
GROUP BY actual.actualid
SQLFiddle:http://sqlfiddle.com/#!2/a0f3af/8