Supposing you had a table of time logged, and a staff table.
Code:
tblStaff
StaffID
StaffName
tblLog
LogID
StaffID
LogInDate
LogOutDate
HoursLogged
Now, this gives you the hours in the last 30 days, but you also want the staff name off the staff table:
Code:
qryLog:
SELECT
TL.StaffID,
Max(TL.LoginDate) As LastLoggedIn,
SUM(TL.HoursLogged) AS HoursInLast30Days
FROM
tblLog AS TL
WHERE
TL.LoginDate > Date() - 30
GROUP BY
TL.StaffID;
You could join the records before you do the sum, and then accept the first name on any record for a given staffid:
Code:
SELECT
TL.StaffID,
First(TS.StaffName),
Max(TL.LoginDate) As LastLoggedIn,
SUM(TL.HoursLogged) AS HoursInLast30Days
FROM
tblLog AS TL
INNER JOIN
tblStaff AS TS
ON TL.StaffID = TS.StaffID
WHERE
TL.LoginDate > Date() - 30
GROUP BY
TS.StaffID;
or you could join the results of qrylog to the staff table and get the same result, probably slightly more efficiently:
Code:
SELECT
QL.StaffID,
TS.StaffName,
QL.LastLoggedIn,
QL.HoursInLast30Days
FROM
qryLog AS QL
INNER JOIN
tblStaff AS TS
ON TL.StaffID = TS.StaffID;
you could also do it in the same query, although Access sometimes gets picky about exact syntax.
Code:
SELECT
QL.StaffID,
TS.StaffName,
QL.LastLoggedIn,
QL.HoursInLast30Days
FROM
tblStaff AS TS
INNER JOIN
(SELECT
TL.StaffID,
Max(TL.LoginDate) As LastLoggedIn,
SUM(TL.HoursLogged) AS HoursInLast30Days
FROM
tblLog AS TL
WHERE
TL.LoginDate > Date() - 30
GROUP BY
TL.StaffID) AS QL
ON TS.StaffID = QL.StaffID;