我正在努力完成似乎很简单的任务。我的数据库中有两个表:
Table devices:
id, uid, devicecode, devicename, devicetype
Table devicelogs:
id, devicecode, timelogged, devicestatus
在页面加载之前,我使用以下查询获取所有用户的设备:
$sql = "SELECT * FROM devices WHERE `uid`='1'";
这使我获得了所有用户的设备,然后使用这些设备通过复选框在页面上创建“开关”。
要设置复选框的状态,我需要检查“ devicelogs”表中该设备的最后一个设备状态(打开或关闭)。
我猜我将不得不进行某种形式的联接,其中devicelogs表应显示每个设备的最后记录。虽然不确定如何去做,但我将不胜感激。谢谢。
最佳答案
您可以分两步构建查询。首先,您将为每个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