Je rame avec une autre requete, j'essaye suivant les aides que vous m'avez fourni d'améliorer la requete ci-dessous avec un LEFT JOIN
Voici ma requete actuelle
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 SELECT DISTINCT e.id, e.nom, e.prenom, e.type, (SELECT type FROM pointage_ouvrier as p WHERE DAY(datetimepointage)= '5' and MONTH(datetimepointage)= '9' and YEAR(datetimepointage)= '2017' and p.id_ouvrier = e.id ORDER BY datetimepointage DESC LIMIT 1 ) as typepointage FROM employer as e WHERE e.type='2' or e.type='3' ORDER BY e.type, e.nom, e.prenom
Voici celle que je viens de crée, qui est plus rapide mais que ne répond pas vraiment à ma demande.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 SELECT DISTINCT e.id, e.nom, e.prenom, e.type, t.type as typepointage FROM employer as e LEFT JOIN (SELECT p.id_ouvrier, p.type FROM pointage_ouvrier as p WHERE DAY(datetimepointage)= '5' and MONTH(datetimepointage)= '9' and YEAR(datetimepointage)= '2017' ORDER BY datetimepointage DESC ) as t ON t.id_ouvrier = e.id WHERE e.type='2' or e.type='3' ORDER BY e.type, e.nom, e.prenom
Je souhaiterais avoir un tableau avec 'id', 'nom', 'prenom', 'type' de la table employer (lorsque le type est = à 2 ou 3) mais en plus avoir la colonne 'typepointage' qui serait le dernier pointage de la journée de cette personne à reprendre dans la table pointage_ouvrier.
Dans cette dernière table j'ai les colonnes
'id_ouvrier' --> identique à id de la table employer
'type' --> type de pointage réaliser
'datetimepointage' --> date et heure du pointage
Si j'arrivais à faire un GROUP BY après un ORDER BY ce serait facile mais ce n'est pas possible.
Je n'arrive donc pas à éliminer les doublons et faire je ne vois que le dernier type de pointage réalisé dans la colonne 'typepointage'
Comment feriez vous cela ?
Partager