У меня есть таблица, содержащая следующие поля.
EntryID, Date, BatteryID, Capacity, Type
EntryID - это уникальный номер записи автоматического увеличения
Дата - это дата, когда запись была создана
BatteryID - уникальное название для этой батареи, такой NiMh1, NiMh2 и т.д.
Емкость - это измеренная емкость этой конкретной батареи
Тип - это тип батареи, такой как NiMh AA, NiCD AAA, NiMh AAA, NiMh D и т.д.
Я бы хотел...
1). Выберите все батареи типа NiMh AA
2). От тех, которые я хочу сортировать (группировать) их по BatteryID
3). Для каждого идентификатора батареи я хочу выбрать ТОЛЬКО тот, который имеет самую последнюю дату
Это строка запроса, которую я использую, и она почти работает, но не выбирает запись для каждой батареи с последней DATE. Я не вижу, как рассказать оператор Group By, чтобы выбрать запись с последней датой в этой ситуации.
Выберите BatteryID, емкость, тип, примечания от батарей, где тип = группа "NiMh AA" по заказу BatteryID по мощности
Спасибо
Я получаю это.....
Изображение 1
Я хочу этот.....
Image2
Это очень распространенное требование к отчетности. В MySQL вы можете справиться с этим, присоединившись к подзапросу, который выполняет GROUP BY
чтобы найти самую последнюю запись для каждой группы батарей:
SELECT b1.*
FROM batteries b1
INNER JOIN
(
SELECT BatteryID, MAX(Date) AS max_date
FROM batteries
WHERE type = 'NiMh AA'
GROUP BY BatteryID
) b2
ON b1.BatteryID = b2.BatteryID AND b1.Date = b2.max_date
WHERE
b1.type = 'NiMh AA';