我有一个基于PHP/MySQL的解决方案,用于显示ID和ID在过去一天和今年的MySQL数据库表中的条目数。 这些信息只是输出到表格中。加入最近的列条目到MySQL查询结果
我们也能够快速查看与该表上每个ID关联的特定列的最新值。
中使用的表的说明如下:
TABLE: tags
id int auto_increment
Tag int(8)
Timestamp timestamp
Battery varchar(3) // Status for rfid tags battery condition
TABLE: tag_vehicle
id int auto_increment
Tag int(8)
VehicleId varchar(10)
这里是我的MySQL查询
SELECT tags.Tag,
sum(CASE WHEN year(Timestamp) = year(CURDATE()) then 1 else 0 end) as ytd,
sum(CASE WHEN date(Timestamp) = date(CURDATE()) then 1 else 0 end) as today,
tag_vehicle.VehicleId,
MAX(Timestamp) as latest
FROM tags
INNER JOIN tag_vehicle
ON tags.Tag = tag_vehicle.Tag
GROUP BY VehicleNumber;
这将生成这些列的表
| Tag | ytd | today | VehicleId | Timestamp |
|1234 | 300 | 12 | BUS1234 | 2014-09-22 |
我只需在表格中添加与每个标签匹配的Battery的最新价值即可。我一直在尝试一整个早上来产生这个结果,但我没有任何运气。
| Tag | ytd | today | VehicleId | Timestamp | Battery |
|1234 | 300 | 12 | BUS1234 | 2014-09-22 | ok |
我不是MySQL专家,开始觉得查询过于混乱。我很难弄清楚如何获得这种电池价值。
我应该如何获取Battery的最新条目并将其匹配到正确的行? 有没有办法在1(也许更干净)的查询中做到这一切,或者我应该做2个查询并将电池列与标签列相匹配?
您需要加入包含最新电池(如SELECT MAX(timestamp),电池GROUP BY battery')的子查询。这是一般想法,可能无法正常工作。 – Mihai 2014-09-22 17:36:17