Validation des relations entre mes tables vs bogue de requêtes [Résolu]

Messages postés
6
Date d'inscription
mardi 3 décembre 2019
Statut
Membre
Dernière intervention
5 décembre 2019
- - Dernière réponse : Bolak_B
Messages postés
6
Date d'inscription
mardi 3 décembre 2019
Statut
Membre
Dernière intervention
5 décembre 2019
- 5 déc. 2019 à 14:03
Bonjour,

J'aimerais m'assurer que les relations que j'ai créé entre mes tables sont adéquates. Je tente de faire une requête qui ne convient pas à mes besoin et j'ai beau fouiller pour des réponses je n'y parvient pas.

Tout d'abord mes relations:


L'idée générale, j'ai des employés qui travaille un nombre X d'heures qui s'accumule dans la table "Temps travaillé employé". Par contre, chaque semaine ils sont payés un nombre Y d'heures qui ne correspond pas nécessairement au X.
Il y a donc un écart possible chaque semaine d'heure, qui se "banque".

Mon défi est de produire un rapport pour connaitre le solde à jour de ces écarts hebdomadaires.

1- j'ai créé une requete dans la table Temps payé employés pour sortir tous les employés qui ont des gains (somme) par semaine.
2- j'ai créé une requête dans la table Temps travaillé employé pour produire aussi un regroupé des heures par semaines. À noter, les heures sont inscrites par jour dans cette table mais ma requete les regroupe par semaine.
3- je lie les 2 requêtes, tout fonctionne si j'analyse 1 semaine à la fois, je peux facilement produire l'écart entre le payé et le travaillé. Mais dès que je veux sortir sur plusieurs semaine, la requête ne veut pas regrouper les dates de périodes, elle me renvoie l'ensemble des possibilités avec des infos qui ne font plus aucun sens.

J'ai l'impression que ma structure de départ n'est pas valide, si c'est la cas, merci de bien vouloir m'ider un peu. Je me sens pas mal découragé.
Afficher la suite 

3 réponses

Messages postés
3526
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
4 décembre 2019
917
0
Merci
Bonjour,

À première vue le soucis viendrait plutôt de la façon dont tu lies les requêtes.
Mais ce serait beaucoup plus simple de te corriger si on savait ce que tu as fait :)
Tu veux bien nous montrer les requêtes ? Celles qui marchent, celle qui ne marche pas comme tu voudrais.

Xavier
Commenter la réponse de Reivax962
Messages postés
6
Date d'inscription
mardi 3 décembre 2019
Statut
Membre
Dernière intervention
5 décembre 2019
0
Merci
Oui bien sûre! Voici les 3 requêtes et le résultat de la 3e avec en jaune ce qui devrait être affiché.



yg_be
Messages postés
9050
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
5 décembre 2019
464 -
bonjour, à quoi sert la table PeriodesdePaie? si elle est utile, je pense qu'il faut l'impliquer dans la troisième requête.
Commenter la réponse de Bolak_B
Messages postés
6
Date d'inscription
mardi 3 décembre 2019
Statut
Membre
Dernière intervention
5 décembre 2019
0
Merci
Quand je l'ajoute j'ai le message d'erreur suivant:


J'ai ajouté de cette façon:
Bolak_B
Messages postés
6
Date d'inscription
mardi 3 décembre 2019
Statut
Membre
Dernière intervention
5 décembre 2019
-
J'ai changé le champs mais l'erreur demeure. Je ne trouve pas comment ajouter mon fichier à la discussion.
yg_be
Messages postés
9050
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
5 décembre 2019
464 > Bolak_B
Messages postés
6
Date d'inscription
mardi 3 décembre 2019
Statut
Membre
Dernière intervention
5 décembre 2019
-
je pense qu'il faut passer par une requête intermédiaire sur les deux tables employes et periodes, sans relation, en récupérant les champs Nom et datedeperiode. appelons la employesdate.
ensuite, faire une requête (ta "troisième" requete) avec employesdate, tempspaye et tempstravaille, en définissant deux relations de employesdate vers chacune des deux autres tables (avec toutes les flèches partant de employesdate).

pour partager ton fichier, tu peux le publier sur internet (cjoint.com, google drive, ...), puis partager ici le lien vers le fichier.
Bolak_B
Messages postés
6
Date d'inscription
mardi 3 décembre 2019
Statut
Membre
Dernière intervention
5 décembre 2019
-
Oh tu me rends tellement content, merci beaucoup de ton aide c'était exactement ça. :)
Je peux me permettre une dernière petite question?
Si je me fais une table de taux horaire avec des dates pour chaque changement.
Comment tu ferais ton critère de sélection pour extraire le taux le plus récent en fonction de période de paie?

Ex: table de taux horaire:
2019-08-11 25$
2019-06-22 24$
2018-12-01 23$

La date de période de paie est: 2019-07-27.
Le système devrait utiliser le taux du 2019-06-22 soit 24$. Je sais que je peux mettre <Date de période mais comment lui dire le plus récent disponible jusque là?
yg_be
Messages postés
9050
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
5 décembre 2019
464 > Bolak_B
Messages postés
6
Date d'inscription
mardi 3 décembre 2019
Statut
Membre
Dernière intervention
5 décembre 2019
-
je suggère de créer une requête, appelons-la toustaux, sur base de la table de taux horaire:
SELECT t0.taux, t0.debut, nz(min(t1.debut),t0.debut+36525) AS fin
FROM tauxhoraire AS t0 left join tauxhoraire AS t1
on t1.debut > t0.debut
GROUP BY t0.taux, t0.debut;

il faut ensuite ajouter la requête toustaux à la requête principale, récupérer le champ toustaux.taux, et ajouter ceci dans la clause where:
[Date de période] >= toustaux.debut and [Date de période] < toustaux.fin
Bolak_B
Messages postés
6
Date d'inscription
mardi 3 décembre 2019
Statut
Membre
Dernière intervention
5 décembre 2019
-
Merci beaucoup!! Je vais essayer ça :)
Commenter la réponse de Bolak_B