У меня есть решение на основе PHP/MySQL для отображения идентификатора и количества записей, которые ID имеет в таблице базы данных MySQL за последний день и год до настоящего времени. Информация просто выводится на таблицу.Объединение последней записи столбца в результат запроса MySQL
Мы также смогли бы быстро увидеть самое последнее значение для конкретного столбца, связанного с каждым идентификатором в этой же таблице.
Таблицы использования имеют следующие описания:
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, и его начало ощущаться, что запрос слишком запутан. Мне сложно понять, как получить эту стоимость батареи.
Как я могу получить последнюю информацию о батарее и сопоставить ее с правой строкой? Есть ли способ сделать все это в 1 (возможно, более чистом) запросе, или мне нужно сделать 2 запроса и сопоставить столбцы Battery столбцам с тегами?
Вам нужно ПРИСОЕДИНЯЙТЕСЬ в подзапрос, содержащий последнюю батарею, такую как 'SELECT MAX (timestamp), батарея GROUP BY battery' Это общая идея, возможно, не работает точно так, как есть. – Mihai