0当没有行时

Rai*_*r34 3 php mysql sql date

我有以下sql查询

 SELECT DATE_FORMAT(date,'%d.%m. %y') as date, COUNT(idStat) as number
  FROM stat 
  WHERE IdGame = ? AND date >= ? AND date <= ? 
  GROUP BY date
Run Code Online (Sandbox Code Playgroud)

它返回日期以及今天有多少人访问过游戏,但是当今天没有行时,如何返回0?

例如,db中不存在日期15.12.1993,但用户选择日期在15.10.1950和12.15.2020之间.

我想要返回这个不存在的日期15.12.1993,但计数为0.这是否可能?

感谢帮助,

菲利普.

Gor*_*off 5

最好的方法是有一个Calendar方便的相关日期表.然后,您可以使用a left join来获取日期.像这样的东西:

SELECT DATE_FORMAT(c.date,'%d.%m. %y') as date, COUNT(s.idStat) as number
FROM Calendar c LEFT JOIN
     stat s
     ON c.date = s.date AND s.IdGame = ?
WHERE c.date >= ? AND c.date <= ?
GROUP BY c.date;
Run Code Online (Sandbox Code Playgroud)

如果你在每个日期都有游戏,但问题是特定的游戏不是一天,你可以使用这个捷径:

SELECT DATE_FORMAT(date,'%d.%m. %y') as date, SUM(IdGame = ?) as number
FROM stat
WHERE date >= ? AND date <= ?
GROUP BY date;
Run Code Online (Sandbox Code Playgroud)

这并不适用于所有情况,但它可以是一个有用的捷径.