Validation des relations entre mes tables vs bogue de requêtes
Résolu
Bolak_B
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
Bolak_B Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
Bolak_B Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
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é.
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:
- Validation des relations entre mes tables vs bogue de requêtes
- Ethernet n'a pas de configuration ip valide - Guide
- Table des matières word - Guide
- Udp vs tcp - Guide
- Excel validation des données liste - Guide
- Table des annexes word ✓ - Forum Word
3 réponses
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
À 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
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.
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.
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à?
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à?
je suggère de créer une requête, appelons-la toustaux, sur base de la table de taux horaire:
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:
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