J'ai la requête SQL en cours pour sélectionner les demandes par heure:Comment puis-je éviter les lacunes lors de la sélection par heure dans MySQL?
SELECT ((FLOOR(unix_timestamp(request_when)/(60*60))*(60*60))*1000) as request_when, COUNT(*) as amount
FROM api_requests WHERE request_when BETWEEN SUBDATE(NOW(), INTERVAL 12 HOUR) AND NOW()
GROUP BY HOUR(request_when) ORDER BY id DESC;
Le problème est que quand il y a 0 lignes, il ne retourne pas tout de suite, ce qui est prévu en fonction de la requête. Cependant, je voudrais qu'il renvoie 0 (avec le datetime/timestamp correct). J'ai joué avec d'autres requêtes mais aucune d'entre elles ne semble fonctionner.
Un exemple de sortie de ce qui se passe maintenant:
1289516400000 6
1289512800000 15
1289509200000 11
1289505600000 31
1289476800000 3
Vous remarquerez qu'il a sauté quelques heures. Si vous ne vous sentez pas envie de faire le calcul, les valeurs datetime de ces horodateurs sont
2010-11-11 12:00:00 3
2010-11-11 20:00:00 31
2010-11-11 21:00:00 11
2010-11-11 22:00:00 15
2010-11-11 23:00:00 7
Je voudrais que le temps sans lignes (heures 13-19, par exemple) pour revenir « 0 » au lieu de pas de ligne . Cela rendrait ma sortie a voulu ressembler à ceci:
2010-11-11 12:00:00 3
2010-11-11 13:00:00 0
2010-11-11 14:00:00 0
2010-11-11 15:00:00 0
2010-11-11 16:00:00 0
2010-11-11 17:00:00 0
2010-11-11 18:00:00 0
2010-11-11 19:00:00 0
2010-11-11 20:00:00 31
2010-11-11 21:00:00 11
2010-11-11 22:00:00 15
2010-11-11 23:00:00 7
je suis allé de l'avant et créé une table « aide » ou « charge », avec les heures 00-23, et j'ai essayé d'utiliser un RIGHT JOIN à lui, mais ma requête renvoie 0 lignes et ne fonctionne pas du tout. Cette requête qui ne fonctionne pas ressemble à ceci:
SELECT ((FLOOR(unix_timestamp(request_when)/(60*60))*(60*60))*1000) as request_when, IFNULL(COUNT(*),0) as amount
FROM api_requests RIGHT JOIN _filler ON (HOUR(api_requests.`request_when`) = _filler.`hours`)
WHERE request_when BETWEEN SUBDATE(NOW(), INTERVAL 12 HOUR) AND NOW() GROUP BY HOUR(request_when) ORDER BY api_requests.id DESC;
Exemples de données et de valeurs attendues? – Danosaure
Ajout de valeurs attendues et de plus de détails. – RSully