2017-04-02 60 views
0

我正在使用mysql。我有一個表time_record。有四列即id,time_in,time_out和students_id。我只想查詢學生的最新time_in記錄,但如果學生的最新記錄在time_out中,則不會查詢。如果學生仍然沒有超時,如何查詢學生的最新time_in記錄?來自time_in列的SQL查詢但不是來自time_out列

感謝

這裏是我的示例代碼(雖然它返回從timein和超時都記錄)

select concat (
     st.student_fname, 
     ' ', 
     st.student_lname 
     ) as 'Name', 
    t.students_id, 
    t.time_in, 
    t.time_out, 
    case 
     when t.time_in > t.time_out 
      then t.time_in 
     else t.time_out 
     end as MostRecentDate 
from classes c 
join student_classes s on c.id = s.classes_id 
join timerecords t on t.students_id = s.students_id 
join students st on s.students_id = st.student_id 
where c.employees_id = 'sessionvalue2' 
    and 
where date (t.time_in) between date (now()) and date (now()) 
+0

後的樣本數據,預期成果和你嘗試過,但沒有工作。 – GurV

+0

對不起,其他列來自我的數據庫的其他表。日期(now())和日期(now())之間的日期(t.time_in)允許在當前日期內查詢日期。 – Jay

回答

0

據我瞭解,你要查詢的所有結果,其中time_in是最新進入並排除time_out是最新條目的結果。

試試這個:

SELECT DISTINCT(tr.id),tr.time_in FROM time_record TR WHERE tr.time_in> tr.time_out ORDER BY tr.time_in DESC

+0

雖然mu表中有一些記錄,但它返回空結果。 – Jay

+0

噢,天啊,謝天謝地。我已經嘗試過了。我在CONCAT之前放置了DISTINCT tr.id,它現在可以工作。謝謝! – Jay

0

我覺得你TIME_OUT列可能有空值,因此在這種情況下比較結果爲false,並返回time_out。

此外,

date (t.time_in) between date (now()) and date (now()) 

沒有任何意義。如果您想檢查今天的日期time_in,做到:

date(t.time_in) = curdate(); 

使用curdate(),而不是date(now())

Sargable,這樣可以使用索引如果有的話:

date >= curdate() 
and date < date_add(curdate(), interval 1 day) 

嘗試翻轉的情況是這樣的:

select concat (
     st.student_fname, 
     ' ', 
     st.student_lname 
     ) as 'Name', 
    t.students_id, 
    t.time_in, 
    t.time_out, 
    case 
     when t.time_in < t.time_out 
      then t.time_out 
     else t.time_in 
     end as MostRecentDate 
from classes c 
join student_classes s on c.id = s.classes_id 
join timerecords t on t.students_id = s.students_id 
join students st on s.students_id = st.student_id 
where c.employees_id = 'sessionvalue2' 
and date >= curdate() 
and date < date_add(curdate(), interval 1 day) 
+0

我的代碼有錯誤:( – Jay

+0

@Jay有什麼錯誤嗎?你可以在這裏發佈嗎? – GurV

+0

對不起我的錯誤,我刪除了列的空值,並且現在查詢了它,但它仍然沒有回答我的問題問題:( – Jay