Validation des relations entre mes tables vs bogue de requêtes

Résolu/Fermé
Bolak_B Messages postés 6 Date d'inscription mardi 3 décembre 2019 Statut Membre Dernière intervention 5 décembre 2019 - 3 déc. 2019 à 20:51
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é.
A voir également:

3 réponses

Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
Modifié le 4 déc. 2019 à 10:37
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
0
Bolak_B Messages postés 6 Date d'inscription mardi 3 décembre 2019 Statut Membre Dernière intervention 5 décembre 2019
4 déc. 2019 à 14:34
Oui bien sûre! Voici les 3 requêtes et le résultat de la 3e avec en jaune ce qui devrait être affiché.



0
yg_be Messages postés 23297 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 29 octobre 2024 1 549
4 déc. 2019 à 17:17
bonjour, à quoi sert la table PeriodesdePaie? si elle est utile, je pense qu'il faut l'impliquer dans la troisième requête.
0
Bolak_B Messages postés 6 Date d'inscription mardi 3 décembre 2019 Statut Membre Dernière intervention 5 décembre 2019
4 déc. 2019 à 17:22
Quand je l'ajoute j'ai le message d'erreur suivant:


J'ai ajouté de cette façon:
0
yg_be Messages postés 23297 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 29 octobre 2024 1 549
4 déc. 2019 à 17:34
il faut récupérer le champ datedeperiodes de la table periodesdepaie, pas de la table tempspayé.
peux-tu partager ton fichier?
0
Bolak_B Messages postés 6 Date d'inscription mardi 3 décembre 2019 Statut Membre Dernière intervention 5 décembre 2019
4 déc. 2019 à 17:39
J'ai changé le champs mais l'erreur demeure. Je ne trouve pas comment ajouter mon fichier à la discussion.
0
yg_be Messages postés 23297 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 29 octobre 2024 1 549 > Bolak_B Messages postés 6 Date d'inscription mardi 3 décembre 2019 Statut Membre Dernière intervention 5 décembre 2019
4 déc. 2019 à 18:02
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.
0
Bolak_B Messages postés 6 Date d'inscription mardi 3 décembre 2019 Statut Membre Dernière intervention 5 décembre 2019
4 déc. 2019 à 19:33
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à?
0
yg_be Messages postés 23297 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 29 octobre 2024 1 549 > Bolak_B Messages postés 6 Date d'inscription mardi 3 décembre 2019 Statut Membre Dernière intervention 5 décembre 2019
Modifié le 4 déc. 2019 à 22:30
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
0