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 PostgreSQL Discussion :

Ajouter des points de contrôle/relevés tous les ans?


Sujet :

Requêtes PostgreSQL

  1. #1
    Membre du Club
    Ajouter des points de contrôle/relevés tous les ans?
    Bonjour,

    Voici ce que j'aimerais mettre en place:

    Tous les ans, j'ai des ouvriers qui doivent se rendent, 3 fois par ans, sur une dizaine de points de contrôles (sur 500 en tout) et faire des relevés (toujours les mêmes). Les 500 points ne sont pas à faire (tous les ans une centaine est tirée au sort qui ne sont pas à faire).
    Je ne sais pas trop comment faire:
    - est ce que chaque année, je rajoute un champs correspondant à l'année en cours (ex.2020) et en face chaque point, je mets s'il est à faire ou non? je pense que ça va charger ma table
    - est ce que j'ai une table avec un champs numéro de point et un champs année (et tous les ans, je rajoute la liste des points avec l'année
    - est ce qu'il y a une autre solution?

    Enfin, est-il possible d'ajouter de manière automatique tous les points dès que l'année commence? c-à-d qu'au 1er janvier 2021, j'ai automatiquement la liste de mes points qui s'ajoutent à l'année 2021?

    Merci pour votre aide!

  2. #2
    Modérateur

    La meilleur solution me semble être la deuxième :
    - est ce que j'ai une table avec un champs numéro de point et un champs année (et tous les ans, je rajoute la liste des points avec l'année
    Enfin, est-il possible d'ajouter de manière automatique tous les points dès que l'année commence? c-à-d qu'au 1er janvier 2021, j'ai automatiquement la liste de mes points qui s'ajoutent à l'année 2021?
    Il va falloir programmer un truc. Une procédure SQL ferait l'affaire. Algorithmique :
    1) Boucle sur 100 itérations
    2) Sélectionner aléatoirement un point
    3) Tant qu'il est déjà dans la table pour l'année 2021, recommencer
    4) Ajouter à la table le point tiré au sort
    5) Fin de boucle
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre expert
    Vous pouvez toujours faire un
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select PK from table_of_point_of_controls
    order by random()
    fetch first N rows only

    pour avoir N rows tirées au "hasard".

    A vous de voir la logique pour votre problème spécifique (N = 100 ou NROWS - 100...) et par exemple mettre ce query dans la where clause d'un update...
    (where pk in (...) ou where pk not in (....))

###raw>template_hook.ano_emploi###