Bonjour à tous,
Voilà je vais essayer de vous expliquer mon petit cas de figure sur lequel je me prends la tête. Je travaille sur une petite application qui permet de gérer des pointages.
J’ai deux tables regroupant un certains nombre de champs dont ceux présentés ci-dessous :
Pointage
Id_pointage | id_user | semaine | temps | …
Users
Id_user | nom | prenom | …
Mon souhait est de faire une requête qui me ressorte toutes les personnes n’ayant pas pointé 5 jours (temps) / semaine et ce pour toutes les semaines passées, avec un résultat sous la forme suivante :
Id_user | semaine | temps
J’ai donc crée la requête suivante :
SELECT semaine,id_user,SUM(temps) AS totalJ FROM pointage WHERE semaine<42
GROUP BY id_user,semaine HAVING totalJ<5 ORDER BY id_user
Le hic avec cette requête, c’est que seules les lignes des personnes ayant effectué au moins un pointage pour une semaine donnée apparaissent.
Si par exemple l’id_user 1 n’a effectué aucun pointage pour la semaine 40, il n’apparaitra pas. Un peu embêtant pour une requête devant me donner toutes les personnes en retard de pointage. Par contre si il avait juste pointé 1 jour, il serait apparu.
Alors j’ai essayé de modifier ma requête dans tous les sens, en créant une table semaine, en faisant de LEFT / RIGHT JOIN mais rien n’y fait, je ne m’en sors pas !
Avez-vous une idée de comment je peux construire cette « foutu » requête !?
Par avance grand merci pour votre aide.