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

Développement SQL Server Discussion :

Planning horaire en SQL


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 55
    Par défaut Planning horaire en SQL
    Bonjour,

    Je dois requêter un logiciel RH et j'ai un petit problème.
    En effet, je pensais que les plannings étient stockés bêtement dans une table avec DATE et HORAIRES pour chaque jours mais il n'en est rien.

    Les plannings sont en fait définis par des cycles de 3, 8, 10 ou même 24 semaines suivant les employés. Et ces cycles se répètent à partir d'une date donnée.

    Voici ce que ça donne :

    cycle_num libelle_horaire
    1 9h00-17h00
    2 9h00-17h00
    3 9h00-17h00
    4 9h00-17h00
    5 9h00-17h00
    6 REPOS
    7 REPOS
    8 9h00-17h00
    9 9h00-17h00
    10 RTT
    11 9h00-17h00
    12 9h00-17h00
    13 REPOS
    14 REPOS

    Ma question est : Y a-t-il un moyen de "recopier" ce planning à partir d'une date donnée en SQL ?

    La table obtenue ressemblerait à ça si on imagine la date de début à aujourd'hui (30/09/2024) :


    DATE HORAIRE
    30/09/2024 9h00-17h00
    01/10/2024 9h00-17h00
    02/10/2024 9h00-17h00
    03/10/2024 9h00-17h00
    04/10/2024 9h00-17h00
    05/10/2024 REPOS
    06/10/2024 REPOS
    07/10/2024 9h00-17h00
    08/10/2024 9h00-17h00
    09/10/2024 RTT
    10/10/2024 9h00-17h00
    11/10/2024 9h00-17h00
    12/10/2024 REPOS
    13/10/2024 REPOS
    14/10/2024 9h00-17h00
    15/10/2024 9h00-17h00
    16/10/2024 9h00-17h00
    17/10/2024 9h00-17h00
    18/10/2024 9h00-17h00
    19/10/2024 REPOS
    20/10/2024 REPOS
    21/10/2024 9h00-17h00
    22/10/2024 9h00-17h00
    23/10/2024 RTT
    24/10/2024 9h00-17h00
    25/10/2024 9h00-17h00
    26/10/2024 REPOS
    27/10/2024 REPOS
    28/10/2024 9h00-17h00
    ... ...

    J'espère avoir été assez clair...

    D'avance merci

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 55
    Par défaut
    J'ai oublié : il y a bien sûr une colonne "EMPLOYE" dans chaque table, mais l'exemple n'en concerne qu'un seul...

  3. #3
    Membre chevronné Avatar de AaâÂäÄàAaâÂäÄàAaâÂäÄ
    Homme Profil pro
    db@
    Inscrit en
    Septembre 2021
    Messages
    554
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : db@

    Informations forums :
    Inscription : Septembre 2021
    Messages : 554
    Par défaut
    Une belle modélisation...
    Sinon, ça doit bien être possible mais on ne connait pas ton modèle.
    Il doit sans doute y avoir une table de croisement entre ton libelle_horaire et la date, à toi de chercher ça.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 55
    Par défaut
    Citation Envoyé par AaâÂäÄàAaâÂäÄàAaâÂäÄ Voir le message
    Une belle modélisation...
    Sinon, ça doit bien être possible mais on ne connait pas ton modèle.
    Il doit sans doute y avoir une table de croisement entre ton libelle_horaire et la date, à toi de chercher ça.
    J'ai bien cherché, j'ai pas trouvé...
    Mais merci quand même pour ta réponse

    En fait, je pense que la manip' que je demande est intégrée au logiciel mais perso j'aimerais bien la faire en SQL

  5. #5
    Membre Expert
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2016
    Messages
    963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2016
    Messages : 963
    Par défaut
    Bonsoir,

    La valeur de cycle_num représente t'elle toujour un décalage d'un jour ?
    Si oui on peut faire un peu de math

    A partir d'une date de départ, on peut faire un dateadd.
    Ce qui permetra de "dater" chaque ligne de cycle.

    Pour aller au delà du cycle c'est plus complexe.
    Une solution que j'entrevois est d'une part de déterminer le nombre d'occurences/jours du cycle (select count(*) as modulo from cycle where ...), d'autre part générer une table "calendrier", le tout pour numéroter les lignes/jours du calendrier qui nous donnera la valeur pour dateadd et qui permettra de générer la valeur du jour du cycle grâce à un modulo.

    Matériel :

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 55
    Par défaut
    Citation Envoyé par Michel.Priori Voir le message
    La valeur de cycle_num représente t'elle toujour un décalage d'un jour ?
    Oui tout à fait, en y repensant cette nuit je me suis dit qu'il me fallait juste une table DATE et CYCLE_NUM avec CYCLE_NUM = 1 à la date de départ.
    Puis faire une liaison sur CYCLE_NUM.

    Voici ce qu'il me faudrait :
    Nom : screen1.jpg
Affichages : 142
Taille : 25,3 Ko

    Je vais essayer de voir pour la requête mais si qqun l'a déjà, je suis intéressé

  7. #7
    Membre Expert
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2016
    Messages
    963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2016
    Messages : 963
    Par défaut
    Citation Envoyé par Ludix_ Voir le message
    Oui tout à fait, en y repensant cette nuit je me suis dit qu'il me fallait juste une table DATE et CYCLE_NUM avec CYCLE_NUM = 1 à la date de départ.
    Puis faire une liaison sur CYCLE_NUM.

    Pour que ça marche pour tous les collaborateurs il faudrait trouver une date qui corresponde à un début de cycle pour tous ...
    Sinon, faudra faire des ajustements.

Discussions similaires

  1. Réponses: 6
    Dernier message: 20/08/2009, 10h13
  2. Planning Horaire sur Excel
    Par lucazzo dans le forum Excel
    Réponses: 4
    Dernier message: 27/06/2008, 17h38
  3. Calendrier, timing et horaires en SQL..
    Par elecdev dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 04/06/2007, 21h10
  4. Plan de Maintenance SQL 2005
    Par Bronks dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 22/02/2007, 09h05
  5. Plan de maintenance sql server
    Par verbatim56 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 23/12/2005, 14h34

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