0

tbltimpunch次の列を持つという名前のテーブルがあります。

  • employeeID (主キーではない/auto inc ではない)
  • dateoftime (時刻)
  • timein (従業員が入力した時間)
  • タイムアウト(クロックアウトの時間)

次のmysqlで作成できます。

CREATE TABLE tbltimpunch(
    `employeeID` varchar(10),
    `dateoftime` datetime,
    `timein` time,
    `timeout` time
);

timein従業員による最後の入力または入力を取得するにはどうすればよいtimeoutですか?

4

1 に答える 1

0

これはどう?

SELECT employeeID, MAX(timein) AS lastIn, MAX(timeout) AS lastOut
FROM tbltimpunch
GROUP BY employeeID;

これにより、すべての従業員 (テーブルにデータがある) の行を含む結果セットが、最後の timein 値と timeout 値と共に返されます。

更新しました

このソリューションは、あなたが探しているものに近いかもしれません:

SELECT t1.* FROM tbltimpunch t1
LEFT JOIN tbltimpunch t2 ON t1.employeeID=t2.employeeID
GROUP BY t1.employeeID, t1.dateoftime
HAVING t1.dateoftime=MAX(t2.dateoftime);

これにより、最新の dateoftime 値を持つ従業員ごとに 1 行が返されます。

ここでフィドルを試してください:http://sqlfiddle.com/#!2/ca4f3/1/0

于 2013-06-11T22:14:16.610 に答える