Créer une base de données salariés- comment faire certain liens?

Firafou -  
DelNC Messages postés 2360 Statut Membre -
Bonjour à tous, sauveteurs potentiels!

Il m'a été demandé de faire une base de salariés sur Acces, avec l'ensemble des infos relatives aux salariés, notamment les augmentations et les promotions.

J'ai donc faire mes tables de données Salariés, Augmentations et Promotions, de mêmes que mes tables de propriétés types le Service, le Status, etc.

Je ne sais pas bien quoi en faire maintenant pour les lier et en faire un outil intéressant! Mais aussi pour pouvoir sortir un reporting avec les dernières aumgent et promo, le rythme, etc.

Please, aidez moi! :)

3 réponses

  1. DelNC Messages postés 2360 Statut Membre 2 010
     
    Bonjour Firafou,

    voilà un exemple de requête pour savoir le nom d'augmentation reçues pour chaque personnes


    SELECT COUNT(appli_augm.id_user), users.nom
    FROM `appli_augm`, users
    WHERE appli_augm.id_user = users.id_user
    Group by appli_augm.id_user


    Pour avoir la liste des augmentation par personne

    SELECT appli_augm.date, users.nom
    FROM `appli_augm` , users
    WHERE appli_augm.id_user = users.id_user
    AND users.nom = 'titi'
    ORDER BY appli_augm.id_user
    LIMIT 0 , 6


    Pour avoir la liste des augmentation pour un employé par ordre de la plus recente à la plus ancienne

    SELECT appli_augm.date , users.nom
    FROM `appli_augm`, users
    WHERE users.nom = 'titi'
    ORDER BY `appli_augm`.`date` DESC


    Je ne pense pas si c'est possible de classer à la fois par date et par personne

    Pour les opérations sur les dates, je recherche la solution
    1
    1. Firafou
       
      C'est déjà beaucoup! Merci beaucoup. Je m'y penche de nouveau et reste dans l'attente de vos découvertes!
      0
    2. DelNC Messages postés 2360 Statut Membre 2 010
       
      Pour avoir les enregistrements des 6 dernières années

      SELECT users.nom, (
      appli_augm.date
      )
      FROM appli_augm, users
      WHERE DATE_SUB( curdate( ) , INTERVAL 6 YEAR ) <= appli_augm.date
      AND users.id_user = appli_augm.id_user


      NB adaptez les noms des champs selon vos tables.
      0
  2. DelNC Messages postés 2360 Statut Membre 2 010
     
    Bonjour,

    si vous avez besoin de plusieurs type d'augmentation et de promotions, vous pouvez faire ceci

    promotions
    id_promotion, type_promotions, montant

    augmentations
    id_augmentation, nom, montant

    application_augmentation
    id_application_augmentation, id_employe, id_augmentation

    application_promotion
    id_application_promotion, id_employe, id_promotion


    Pour les services
    table services
    id_service, nom, ....


    tables employés
    id_employe, nom, prenom, ....


    services_employe (un employe dans la vie professionnelle peut être dans différents services
    id_serv_employe, id_employe, id_service, ...


    Pour les éléments comme les postes, services, statuts il vaut mieux faire une tables pour chacun des éléments et faire un e table de jointure ou on regroupe les éléments.
    Dans la table de jointure, il faut utiliser les clés primaires de chacune des tables.
    0
    1. Firafou
       
      Bonjour DelNC,

      Merci beaucoup pour votre retour!

      Il se trouve que j'ai effectivement mes tables suivantes:
      la table Slarié, la table AugmentationSalarié et la table PromotionSalarié, (les 2 dernieres sont du type ID augmentation, MatriculeSalarié, Date augmentation, montant et remarques.

      J'ai aussi des tables Pôle, service, statut et niveau que j'ai regroupé dans la table Salarié,

      Je ne sais pas comment faire en sorte que les 6 dernières augmentations ressortent par exemple, et qu'il y ait une alerte si quelqu'un n'a pas été augmenté depuis 3 ans. Pouvoir sortir un Etat avec les dernières actions sur les 6 dernières années pour avoir une vie d'ensemble,

      Merci par avance :)
      0
  3. Firafou
     
    Re Bonjour et encore merci DelNC pour vos conseils,

    J'ai réussi a créer quelque chose qui tient à peu près debout!

    Il y a juste une chose sur laquelle je bloque: j'arrive avec ma requête à faire ressortir les salariés n'ayant pas été augmenté depuis 3 ans (grâce à ma table Augmentation) mais je n'arrive pas a faire apparaitre ceux qui n'ont jamais été augmenté du tout! (puisqu'ils ne sont pas liés à la table Augmentation),

    Auriez vous une solution mirable?? :)

    Merci!
    0
    1. DelNC Messages postés 2360 Statut Membre 2 010
       
      Bonjour,

      je pense qu'il faut utiliser une sous requête Not in.

      Je vais voir si j'y arrive
      0