IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

"Table virtuelle" année complète de 365 jours


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    mai 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2007
    Messages : 76
    Points : 60
    Points
    60
    Par défaut "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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ^^

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    mai 2002
    Messages
    20 902
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 20 902
    Points : 49 641
    Points
    49 641
    Billets dans le blog
    1
    Par défaut
    Dans une base de données de gestion, il faut avoir une table de calendrier avec toutes les entrées de date avec les colonnes suivantes :
    • an
    • mois
    • jour du mois
    • jour de l'année
    • nom du jour
    • trimestre
    • semestre
    • n° de semaine ISO
    • n° de semaine US
    • ...


    Et de l'indexer.

    Lisez l'article que j'ai écrit à ce sujet :
    https://sqlpro.developpez.com/cours/gestiontemps/

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    mars 2010
    Messages
    7 688
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : mars 2010
    Messages : 7 688
    Points : 26 385
    Points
    26 385
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    Si vous disposez d'une version MySQL >= V8, créer un calendrier est très facile à partir d'une requête récursive.

Discussions similaires

  1. table virtuelle année N et N-1
    Par backdraf dans le forum Développement
    Réponses: 4
    Dernier message: 28/08/2010, 17h54
  2. Tables virtuelles dans un restaurant
    Par spelaprat dans le forum Langage SQL
    Réponses: 6
    Dernier message: 23/04/2007, 17h17
  3. voir les tables virtuel deleted inserted
    Par berceker united dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 19/06/2006, 14h31
  4. LIBPQ - Affichage requete dans table virtuelle
    Par Mike@Nestor dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 27/07/2005, 14h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo