2016-07-07 2 views
0

Dies ist kein DUPLICATE .. Ich arbeite mit zwei Tabellen. Die "Antwort" -Benutzer verknüpfen, um nur eine Tabelle zu verwenden. Ich muss den neuesten Eintrag mit verwandten Tabellen zurückgeben. Ich habe keine Lösung gefunden, die dies tut.SQL-Abfrage, die letzte Eingabe pro Benutzer in MySQL mit zwei Tabellen zurückgeben

Ich arbeite an einer Zeitschaltuhr. Ich habe zwei Tabellen in meinem db namens Mitarbeiter und Schläge. Die Stempeltabelle hat ein Feld namens 'emp_id', das sich auf das Feld 'id' in der Tabelle employees bezieht. Ich versuche herauszufinden, eine SQL-Abfrage, die den neuesten Eintrag für jeden Mitarbeiter (ihren aktuellen Status, ob sie derzeit IN, OUT, BREAK, etc. getakteten sind)

Die Antworten, die ich gefunden habe (und sind referenziert in den Kommentaren) ziehen nicht die Informationen aus zwei Tabellen, nur einer.

Bisher habe ich Folgendes, aber das gibt nur den ersten Schlag für jeden Mitarbeiter zurück. Ich versuche stattdessen den letzten Schlag zurückzugeben.

SELECT CONCAT(employees.first, ' ', 'employees.last) AS name, punches.id, punches.date, TIME_FORMAT(punches.tistamp, '%H:%i') AS time 
FROM employees, punches 
WHERE punches.emp_id=employees.id 
GROUP BY emp_id 
ORDER BY emp_id DESC 

Die Schläge Tabelle hat eine ‚id‘ Feld, die auto-Schritte, so im wesentlichen mich für den max punches.id für jeden Mitarbeiter suchen.

+0

Verwenden 'Join' statt einem' Where' und Show in einem Tabellenformat gewünschte Ausgabe, – Igoranze

+0

beiden Schemata Tabellen hinzufügen –

+0

ich zu ändern versucht, WO, JOIN aber erhielt einen mysql Fehler. – craisondigital

Antwort

0

fand ich, dass dieser Code funktioniert ..

SELECT p.emp_id, CONCAT(e.last, ', ', e.first) AS name, p.status, DATE_FORMAT(p.tistamp, '%d/%m/%Y') AS date, TIME_FORMAT(p.tistamp, '%H:%i') AS time FROM punches p, employees e WHERE p.emp_id=e.id AND p.id = (SELECT MAX(p.id) FROM punches p WHERE e.id=p.emp_id) ORDER BY e.last ASC