2017-04-12 47 views
0

我正在努力與似乎是一個簡單的任務。我在我的數據庫中的兩個表:Mysql兩個表加入哪裏第二個表有獨特的記錄和每個最後一個條目

Table devices: 
id, uid, devicecode, devicename, devicetype 

Table devicelogs: 
id, devicecode, timelogged, devicestatus 

我的頁面加載之前,我得到的所有用戶用下面的查詢設備:

$sql = "SELECT * FROM devices WHERE `uid`='1'"; 

這讓我所有用戶的設備,然後我用它來使用複選框在頁面上創建'開關'。

要設置複選框的狀態,我需要檢查該設備的最後一個devicestatus在'devicelogs'表中(開或關)。

我猜我必須做一些連接,其中devicelogs表應該顯示每個設備的最後記錄。不知道如何去做,但我會很感激我能得到的任何幫助。謝謝。

+1

[檢索最後可能的複製記錄在每個組中](http://stackoverflow.com/questions/1313120/retrieving-the-last-record-in-each-group) – Shadow

回答

0

您可以分兩步建立您的查詢。首先,你獲得最新timelogged每個devicecode

select devicecode, max(timelogged) as max_timelogged 
from devicelogs 
group by devicecode 

的,你可以使用上面的查詢作爲過濾器,通過與原始表joinig它

select t1.*, t2.timelogged, t2.devicestatus 
from devices t1 
join devicelogs t2 
on  t1.devicecode = t2.devicecode 
join (
      select devicecode, max(timelogged) as max_timelogged 
      from devicelogs 
      group by devicecode 
     ) t3 
on  t2.devicecode = t3.devicecode and 
     t2.timelogged = t3.max_timelogged 
+0

獲取與最大值類型的問題的記錄幾乎每天都被問到。請標記爲重複,而不是單獨回答每個問題。 – Shadow

+0

感謝斯特凡諾,我現在明白了這個概念!我很感激。 – Bruno

相關問題