MySQL中范围内的每日图表

MySQL中范围内的每日图表,mysql,Mysql,我试图制作一个图表,每天都有一个点,显示每天出现的马的数量 这是我拥有的MySQL数据示例 horse_id | start_date | end_date | 1 | 2011-04-02 | 2011-04-03 | 2 | 2011-04-02 | NULL | 3 | 2011-04-04 | 2014-07-20 | 4 | 2012-

我试图制作一个图表,每天都有一个点,显示每天出现的马的数量

这是我拥有的MySQL数据示例

horse_id   |   start_date   |   end_date    |
1          |   2011-04-02   |   2011-04-03  |
2          |   2011-04-02   |   NULL        |
3          |   2011-04-04   |   2014-07-20  |
4          |   2012-05-11   |   NULL
因此,从2011-04-02开始,到CURDATE结束,该数据上的一个图表应该每天输出一行,每天它应该返回登记的马的数量

我不知道该怎么做,因为我只知道每件物品的开始日期和结束日期,我想知道每天有多少人出席

现在,我每天做一个循环和一个SQL查询,但正如你可能猜到的那样,那就是数千个查询,我希望它能做得更聪明

如果2011-04-02和现在之间的某一天不包含任何内容,我仍然希望它包含0

如果可能的话,我希望避免每天都有一行包含计数的表


我希望这有意义,我被困在这里了

您应该拥有的是一个表,其中只包含从当前表中最早的日期到当前日期的日期

然后您可以使用此表左键连接它,如下所示:

SELECT
dt.date,
COUNT(yt.horse_id)
FROM
dates_table dt
LEFT JOIN your_table yt ON dt.date BETWEEN yt.start_date AND COALESCE(end_date, CURDATE())
GROUP BY dt.date
确保在COUNT函数中有一列您的_表,否则它也会计算空值


COALESCE函数返回其参数的第一个参数,该参数不为NULL,因此如果没有指定结束日期,则取当前日期。

我不确定MySQL是否是最好的绘图软件。尽管如此,尝试还是很有趣的!我的意思是,很明显,这是可以做到的——只是不确定它是否应该做到!可能与@草莓重复,该图将使用mysql中的数据制作。。不是mysql的:@Neil,它不是那个的复制品。我试图实现一些不同的东西:那么,你用来制作图表的东西是什么?也许那就是你应该处理的地方?换句话说,当前设置的所有真正错误之处在于每天都在进行查询—只需查询所有日期,并在应用程序级别处理缺少的日期。