J'ai deux requêtes:obtenir des enregistrements de ces deux derniers mois excluant la liste des enregistrements d'aujourd'hui
requête suivante me retourner les détails des gardes qui travaillent aujourd'hui:
One:
SELECT
`guards`.`surname`
, `contracted_guard`.`con_id`
, `guards`.`street`
, `shifts`.`advised_sign_in`
FROM
`guards`
LEFT JOIN `contracted_guard` ON `contracted_guard`.`guard_id` = `guards`.`gid`
LEFT JOIN `shifts` ON `shifts`.`guard_id` = `guards`.`gid`
WHERE advised_sign_in >=CURDATE()
AND advised_sign_in < CURDATE()+ INTERVAL 1 DAY
GROUP BY `guards`.`gid`
ORDER BY `guards`.`given_names` ASC
LIMIT 400
maintenant , la deuxième requête suivante me renvoie les détails des gardes qui ne travaillent pas aujourd'hui mais qui se sont connectés au moins une fois au cours des deux derniers mois (Ceci parce que pour obtenir la liste des gardes actifs car le système contient une énorme liste de gardes).
Interroger deux:
SELECT
`guards`.`surname`
, `contracted_guard`.`con_id`
, `guards`.`street`
, `shifts`.`advised_sign_in`
FROM
`guards`
LEFT JOIN `contracted_guard`
ON (`contracted_guard`.`guard_id` = `guards`.`gid`)
LEFT JOIN `shifts`
ON (`shifts`.`guard_id` = `guards`.`gid`)
WHERE (`shifts`. advised_sign_in !=CURDATE() AND advised_sign_in >= DATE_SUB(CURDATE(), INTERVAL 2 MONTH))
GROUP BY `guards`.`gid`
ORDER BY `guards`.`given_names` ASC;
Les deux requêtes fonctionnent très bien. Mais le problème est que la deuxième requête renvoie le résultat de ces gardes qui travaillent aussi aujourd'hui mais avec une ancienne date (c'est parce qu'ils se sont également connectés au cours des deux derniers mois). Bien que je veux la liste des gardes excluant les gardes qui travaillent aujourd'hui mais qui ont travaillé au cours des deux derniers mois.
Tous les indices seront très appréciés.
Essayez 'SELECT ..., max (\' changements \ '\' advised_sign_in \ '.) Comme \ 'last_sign_in \' FROM ... 'pour obtenir l'heure de connexion la plus récente pour chaque' guard' et remplacer les identifiants correspondants dans votre 'clause WHERE'. Les requêtes 'GROUP BY' ne sont pas très utiles sans utiliser une" fonction d'accumulation "(' sum() ',' count() ',' max() ',' min' ...). – Lukas