Partage
  • Partager sur Facebook
  • Partager sur Twitter

Parcourir X tables Historiques

    10 novembre 2020 à 10:39:23

    Bonjour, 

    je travaille dans un bureau HR et je dois régulièrement sortir des situations statistiques sur plusieurs mois et/ou années. 

    Nous possédons une DB Mysql avec une 'Photo' du personnel et de sa situation chaque mois. 

    J'aimerais créer une procédure/fonction/ truc ? qui me permettrait de faire un SQL type 

    select count(*)  Nbre_pers from photo_01_2020

    et de faire parcourir les table photo_02_2020 , photo_03_2020 ... 

    Pour un ou deux mois, je fais des unions ou des Joins selon la demande, mais si on me demande de sortir tout les Pers de 01_2010 a aujourd'hui cela me fais plus de 100 jointures à faire 'à la main'. 

    Ma question est d'abord, est-ce que c'est possible en Mysql pur, si oui , comment , rien que des bonnes pistes me suffirait.

    Sinon, comment le feriez vous ? 

    D'avance merci . 

    • Partager sur Facebook
    • Partager sur Twitter
      10 novembre 2020 à 11:37:08

      Pourquoi ne pas avoir une table photos avec la date au lieu d'une table par mois ?

      Parce qu'à moins de générer la requête SQL avec un langage (PHP par exemple) ou de fusionner les données de ces tables dans une seule ça ne va pas être possible.

      -
      Edité par julp 10 novembre 2020 à 11:38:32

      • Partager sur Facebook
      • Partager sur Twitter
        10 novembre 2020 à 12:03:11

        Merci pour cette réponse.

        le système de photo est existant depuis plusieurs années et je ne suis dans le services que depuis qque mois :) 

        il y a des dizaines de procédures que relies des centaines de tables pour créer une photos avec si je ne me trompe pas 118 colonnes. Avec plus de 30 milles lignes par photos, notre système ne tiendrais pas le choc. 

        même avec des procédures stockées, c'est impossible ? 

        je pose la question pour remonter vers ma hiérarchie qui pense que c'est tout simple de faire une procédure qui parcoure X table. 

        • Partager sur Facebook
        • Partager sur Twitter
          10 novembre 2020 à 14:55:51

          Bonjour, 

          Désoler c'est pas très claire pour moi ou j'ai besoin de plus d'informations. 

          Une table pour créer une photo avec 118 colonnes et plus de 30 000 lignes ? 

          1) 118 colonnes pour créer une photo ? (Pourquoi autan de colonnes ? quelles sont ses colonnes ? un exemple)

          2) 30 000 lignes ? (elle corresponde à quoi ? (aux nombres de personnel))  

          3) Je comprend pas trop la requête 

          select count(*) AS Nbre_pers from photo_01_2020

          Du coup dans la table photo_01_2020, tu compte le nombre de ligne ( je suppose 1 ligne c'est 1 personne) et Nbre_pers c'est un alias ? ) 

          Ta jointure entre les Table tu l'a fait par rapport a quoi ? 

          Si je comprend bien dans chaque Table une procédure est lancé qui crée une image ? 

          Pourquoi recréer l'image à chaque fois et ne pas la stocker à un endroit une seul et unique fois ?  

          • Partager sur Facebook
          • Partager sur Twitter

          Site Internet : https://devst.go.yj.fr

            10 novembre 2020 à 16:54:10

            bonjour Develost, 

            Alors je n'ai peu être pas été assez clair, quand je dis photo , je veux dire un état des lieus de la situation personnelle de la société. 

            118 colonnes, avec le poste , la date de pension, l'adresse, des codes propre a la société et unique pour une personne. c'est compliqué ^^ 

            oui, les 30k de lignes correspondent au nombre de personne présente dans la société. 

            la requête se veut être un exemple , dans le cas présent je compte simplement le nombre de ligne avec comme alias nbre_pers. 

            quand je parle de jointure ou de union , c'est quand je dois donner des résultat sur par exemple jan 2020 et mars 2020 

            select count(*) as nbre_pers from photo_jan_2020
            union
            select count(*) as nbre_pers from photo_fev_2020
            union
            select count(*) as nbre_pers from photo_mar_2020
            j'espere que cela est plus clair maintenant :) mais si je dois donner les même résultat sur 3 ans, cela fais beaucoup de union et j'aimerais faire cela dynamiquement.

            -
            Edité par nathanael nourry 10 novembre 2020 à 16:55:27

            • Partager sur Facebook
            • Partager sur Twitter
              10 novembre 2020 à 17:15:09

              C'est beaucoup plus claire :)

              J'ai très peu utilisé des procédures et des boucles directement avec SQL car pour le projet que je réalise j'utilise du SQL avec du VB.NET 

              Sinon pour le principe (si c'est faisable uniquement avec SQL, il faudrait faire incrémenter le mois de l'année et l'année automatiquement et additionner chaque count dans une variable)

              Je pense que c'est faisable avec une procédure mais j'ai jamais utilisé. 

              Désolé j'ai pas plus d'info sur la manière de faire :-°  

              -
              Edité par DeveloSt 10 novembre 2020 à 17:20:30

              • Partager sur Facebook
              • Partager sur Twitter

              Site Internet : https://devst.go.yj.fr

              Parcourir X tables Historiques

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown