我正在努力解决看似简单的任务。我的数据库中有两个表:
Table devices:
id, uid, devicecode, devicename, devicetype
Table devicelogs:
id, devicecode, timelogged, devicestatus
在我加载页面之前,我使用以下查询获取所有用户的设备:
$sql = "SELECT * FROM devices WHERE `uid`='1'";
这让我获得了所有用户的设备,然后我们用它来创建交换机'在页面上使用复选框。
要设置复选框的状态,我需要检查该设备的最后一个设备状态是在'设备列表中。桌子(打开或关闭)。
我猜我必须进行某种联接,其中devicelogs表应该显示每个设备的最后记录。不知道如何去做,我很感激我能得到任何帮助。感谢。
答案 0 :(得分:0)
您可以分两步构建查询。首先,您会获得每个timelogged
devicecode
select devicecode, max(timelogged) as max_timelogged
from devicelogs
group by devicecode
您可以将上述查询用作过滤器,通过将其与原始表
连接起来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