2013-12-11 171 views
-1

我需要只有一個查詢幫助的問題,這是例如我的表MySQL的:與選擇查詢

id time status sid 
1 10:00 0  1 
2 12:00 0  2 
3 11:00 1  1 
4 13:00 1  2 

(狀態0 =登錄,狀態1 =註銷) 我想在一個用戶知道登錄和註銷時間。 選擇查詢的結果應該是這樣的:

結果:

id time time2 sid 
1 10:00 11:00 1 
2 12:00 13:00 2 

的結果應該包含相同的SID對一個有狀態0和具有狀態1,以便爲接下來的一行結果我會合並兩次首先是用戶的登錄時間,第二次是註銷時間?

+0

如果我們有2個以上記錄的SID = 1。或者你可以說,如果用戶多次登錄會比追蹤它多麼? (需要更新表結構) –

+0

查詢應該爲該用戶返回一行,因爲他可以多次登錄,唯一的問題是我需要在同一行中登錄和註銷時間。我需要爲他的每個會話匹配狀態0和狀態1。 – user20902

+0

看到我的答案它會爲你工作。 –

回答

0

我假設每個用戶只有一次登錄。

SELECT id,time,(select time from table C where M.sid=C.sid and status = 1 LIMIT 1),sid 
FROM table M WHERE status = 0 

如果你在你的表添加一個列到這個樣子:

id time status sid loginid 
11 10:00 0  1 0 
12 12:00 0  2 0 
13 11:00 1  1 11 
14 13:00 1  2 12 

比你可以查詢像

SELECT id,time,(select time from table C where C.loginid=M.id),sid 
FROM table M WHERE status = 0 
+0

這隻適用於每個用戶一次登錄,但我需要全部登錄。 – user20902

+0

你的表結構需要修改才能在登錄/註銷之間進行鏈接,而不會遇到困難。 –

+0

甚至你的時間字段不存儲完整的時間戳。 .. :( –