"Table virtuelle" année complète de 365 jours
Bonjour à tous,
Dans l'optique d'alimenter un graphique cumulatif du chiffre d'affaire sur une année entière, j'interroge toutes les ventes et j'additionne ces ventes par jour (c'est la partie easy).
Le souci est le suivant : il n'y a pas de vente tous les jours de l'année, or j'ai besoin de sortir un tableau annuel pour l'interpréter ensuite en graph.
L'idée serait de faire une jointure d'une table calendrier annuelle avec ma table de vente, mais... est-ce vraiment nécessaire de créer une table calendrier en "dur" dans ma base de données ? Dois-je en créer pour chaque nouvelle année ?
Est-ce qu'il existe un moyen de créer plutôt une base de données "virtuelle" temporaire pour le besoin de cette requête spécifique ?
L'idée serait celle-ci : créer une table "virtuelle" du 2021-01-01 au 2021-12-31 et faire une jointure avec la table de mes ventes :
Code de la table des ventes :
Code:
1 2 3 4 5 6 7 8 9
|
SELECT date_jour_annee, total_vente_jour
FROM table_virtuelle_annuelle
LEFT JOIN (
SELECT (SUM(montant) AS `total_vente_jour`, CONVERT(date, DATE) AS date_jour
FROM `vente`
GROUP BY YEAR(date), MONTH(date), DAY(date)
) AS table_ventes
ON table_ventes.date_jour = table_virtuelle_annuelle.date_jour_annee |
Et ensuite j'y associerais cette méthode pour cumuler les données de jour en jour.
J'ai lu quelque chose sur les vues, dois-je passer par cette solution ou fais-je fausse route ?!
Est-ce plus rapide de le faire via MySQL (si toutefois c'est possible) ou boucler via php pour la création d'un tableau annuel + cumuler les données/jour (mais je pense avoir une idée de la réponse) ?!
Merci pour vos retours d'experts qui m'éviteront d'accoucher d'une montagne ^^