Comment afficher les dates tous les 6 derniers jours dans une requête SQL?

Solutions (1)
Tags :
  • Select
  • Sql
  • Programmation
|
Bonjour,
Je veux exécuter une requête SQL qui me retourne le nombre de lignes trouvés dans la base pour chaque date pour les derniers 6 jours.
Voici la requête que j'ai utilisé:
  1. SELECT DATE(DTE) AS datelog, COUNT(DIRECTION) AS sent FROM tab1 WHERE (DATE(DTE) BETWEEN DATE_SUB(CURDATE(),INTERVAL 6 DAY) AND CURDATE()) GROUP BY datelog;

Cette requête marche mais elle m'affiche seulement les dates trouvés dans la base alors je veux afficher tous les 6 derniers jours même si ils ne se trouvent pas dans la base.
Merci pour votre aide
  • Meuniers a édité ce message
  • OmaR a édité ce message
  • sab ri a édité ce message
Contenus similaires
Score
0
òh
òi
, Modérateur |
Salut,

Pas sûr que ce soit super simple à faire en SQL.

Sauf si je loupe quelque chose, la première idée qui me viendrait, ça serait déjà de lister les 6 jours :
  1. SELECT CURDATE() AS CurrentDate
  2. UNION ALL SELECT DATE_SUB(CURDATE(), INTERVAL 1 DAY)
  3. UNION ALL SELECT DATE_SUB(CURDATE(), INTERVAL 2 DAY)
  4. UNION ALL SELECT DATE_SUB(CURDATE(), INTERVAL 3 DAY)
  5. UNION ALL SELECT DATE_SUB(CURDATE(), INTERVAL 4 DAY)
  6. UNION ALL SELECT DATE_SUB(CURDATE(), INTERVAL 5 DAY)
  7. UNION ALL SELECT DATE_SUB(CURDATE(), INTERVAL 6 DAY)


Et de faire un LEFT OUTER JOIN avec ta table afin d'avoir les résultats pour ces dates.

Si tu veux faire qu'une seule requête, ça donnerait quelque chose dans ce genre (pas testée...):
  1. SELECT DATE(CurrentDate) AS datelog, COUNT(DIRECTION) AS sent
  2. FROM (SELECT CURDATE() AS CurrentDate
  3. UNION ALL SELECT SUBDATE(CURDATE(), 1)
  4. UNION ALL SELECT SUBDATE(CURDATE(), 2)
  5. UNION ALL SELECT SUBDATE(CURDATE(), 3)
  6. UNION ALL SELECT SUBDATE(CURDATE(), 4)
  7. UNION ALL SELECT SUBDATE(CURDATE(), 5)
  8. UNION ALL SELECT SUBDATE(CURDATE(), 6)) AS TheDates
  9. LEFT OUTER JOIN tab1 ON DATE(TheDates.CurrentDate) = DATE(tab1.DTE)
  10. GROUP BY datelog;

  • OmaR a édité ce message
  • Commenter cette réponse |

Ce n'est pas ce que vous cherchiez ?

Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS