我有一個基於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