2014-08-29 17 views
0

嗨我有2個表(用戶/原木有點兒事)mySQL:如何通過user_logs加入用戶返回最新的日誌?

tk_assets(用戶) tk_sessions(日誌)< - ,其中每個日誌同時包含stamp_in和stamp_out劃時代的值(構成的1次會話用戶。

認爲用戶登錄時,其最新的會議沒有一個stamp_out值(仍登錄)

我只需要檢索沿着它的「最新一屆」數據庫的所有用戶..

簡單英語中,t他將 「選擇每個用戶以及最近一次會議」

我似乎無法找出正確的SQL語句爲這個..

SELECT 
tk_assets.ass_id, 
tk_sessions.stamp_in, 
tk_sessions.stamp_out 
FROM 
tk_assets 
LEFT JOIN tk_sessions ON tk_assets.ass_id = tk_sessions.ass_id 
GROUP BY 
tk_sessions.ass_id 
ORDER BY 
tk_sessions.stamp_in DESC 

這是據我得到..

回答

0

除非您需要其他信息,否則MAX應該幫助您。

SELECT u.*, MAX(l.stamp_out) FROM user u 
INNER JOIN logs l ON l.user_id = u.id 
WHERE l.stamp_out = 0 
GROUP BY u.id 

如果你需要更多的是,看看這個問題:MySQL JOIN the most recent row only?

0

Yoh公司的命名約定是有點粗糙

SELECT assets.`ass_id`, sessions.`stamp_in`, sessions.`stamp_out`, sessions.`ass_id` 
FROM tk_assets assets 
LEFT JOIN tk_sessions sessions 
ON assets.`ass_id` = sessions.`ass_id` 
WHERE assets.`ass_id` = sessions.`ass_id` 
GROUP BY sessions.`ass_id` 
ORDER BY sessions.`stamp_in` DESC