Ich muss alle Mitarbeiter zuerst Login-Zeit und letzte Logout-Zeit innerhalb des Datumsbereichs finden. Bisher habe ich versucht, anderen Ansatz mit einer Gruppe von Klausel aber nicht in der Lage zu bekommen, was ich will ich versuchte, diese AbfrageMySQL - Alle Mitarbeiter zuerst Punch-in-Zeit und Last-Punch-in-Zeit innerhalb von Datumsbereich
SELECT p1.EmpName, p1.LogDate,
(SELECT MIN(LogTime)
FROM log as p2
WHERE p2.EmpName=p1.EmpName
GROUP BY p2.EmpName) as login,
(SELECT MAX(LogTime)
FROM log as p2
WHERE p2.EmpName=p1.EmpName
GROUP BY p2.EmpName) as logout,
LogID from log as p1
WHERE LogDate
BETWEEN '2017-08-05 00:00:00'
AND '2017-08-010 00:00:00'
GROUP BY SrNo
ich erreicht, was ich suchte Aber das gibt ich Ergebnisse duplizieren. Hier aktuelle Tabelle der log
Hier ist, was ich erreicht habe bisher
ich das gleiche Ergebnis wie 2. Bild wollen, aber ohne dupliziert Reihen. Ich habe festgestellt, dass OVER & PARTITION in MySQL nicht verfügbar ist, was es schwieriger macht. Ich bin nicht gut mit Selfjoins.
Haben Sie versucht, distinct' Funktion mysql 'zu benutzen? Dies wird für Duplikate helfen und wird nur eine – Noob
Wenn ich es auf EmpName column mit DISTINCT verwenden als Es entfernt die Zeilen von anderen Datum (gleiche EmpName) sowie gut und gibt mir Zeile für ein bestimmtes Datum. –
In diesem Fall können Sie zur Gruppe von in Kombination von Reihenfolge von – Noob