首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL计数每天保持查询不按预期工作。

SQL计数每天保持查询不按预期工作。
EN

Stack Overflow用户
提问于 2012-03-29 09:56:53
回答 2查看 224关注 0票数 0

假设我管理医疗病人留置信息系统。

我想用以下最小的结构来计算每天的病人数:

  • stay表有beginend日期时间列
  • PHP给出了$first_day$last_day限制

下面的片段不是我想要的,因为它每天只对条目进行计数,而不是每天都有保留:

代码语言:javascript
复制
SELECT 
  DATE_FORMAT(`stay`.`begin`, '%Y-%m-%d') AS `date`, 
  COUNT(`stay`.`stay_id`) AS `total`
FROM `stay`
WHERE `stay`.`begin` <= '$first_day'
  AND `stay`.`end`   >= '$last_day'
GROUP BY `date` 
ORDER BY `date`

最后但并非最不重要的是,我正在寻找一个完整的SQL查询。

不用说,每天只进行一个SQL查询是非常简单的。

使用临时(日期?)桌子显然是一种选择。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-29 10:44:58

正如您所提到的,在所需范围内使用一个包含所有日期的临时表是处理此问题的一种方法。如果您创建了一个名为foo的日期表,其中包含了$first_day$last_day之间的所有日期(参见here)。

然后,您可以编写如下查询:

代码语言:javascript
复制
SELECT f.date, count(s.stay_id)
FROM foo f
JOIN stay s ON s.begin <= f.date AND s.end >= date
GROUP BY f.date
ORDER BY f.date
票数 1
EN

Stack Overflow用户

发布于 2012-03-29 10:12:03

一个快速的Google把我带到了这个页面:What is the most straightforward way to pad empty dates in sql results (on either mysql or perl end)?

我建议您要么遵循这个问题中的建议,要么在PHP中构建自己的循环。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9923047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档