There are a few problems, first the elapsed time only shows up in hours, but I need hours and minutes.
Secondly If someone has been in to a centre on ten occasions I dont need to see their name ten times, I need to see them once in the query with the total time they have spent from all their visits to a centre.
You wrote "(time in + time out = hours)", that's why I gave you the formula in hours. If you want to have it in minutes too, you'll have to combine two DateDiff() function (one with "h" and one with "n"):
..., DateDiff("h", Time_In, Time_Out) & ":" & DateDiff("n", Time_In, Time_Out) AS Elapsed_Time FROM <Table>...
or compute the difference between both times in minutes and convert it to hours:minutes. In such a case I would write a VBA function and call it from the query:
Function ElapsedTime(ByVal Time1 As Variant, ByVal Time2 As Variant) As Variant
Dim lngMinutes As Long
If Not IsNull(Time1) And Not IsNull(Time2) Then
lngMinutes = DateDiff("n", Time1, Time2)
ElapsedTime = CStr(lngMinutes \ 60) & ":" & CStr(lngMinutes Mod 60)
ElapsedTime = Null
SELECT Time_In, Time_Out, <Other Columns...>, ElapsedTime(Time_In, Time_Out) AS Elapsed_Time FROM <Table>...
You can also compute the elapsed time in decimal if you prefer; just change the line ElapsedTime = CStr(... in the function.
If you want to group the result by person, you'll have to use a more complex query including a GROUP BY clause in your SQL Statement.