У меня есть две таблицы MySQL - оборудование и калибровка, где оборудование представляет собой инвентарь оборудования, а калибровка содержит записи для каждой калибровки оборудования. Одно оборудование будет иметь несколько калибровок.
В MySQL 5.5 следующий запрос полностью работал для определения оборудования, у которого истек срок последней калибровки:
SELECT * FROM equipment AS e
LEFT JOIN (
SELECT calibration_id, equipment_id, calibration_company, certificate_no, date_certified, date_nextdue
FROM (
SELECT calibration_id, equipment_id, calibration_company, certificate_no, date_certified, date_nextdue
FROM calibration
WHERE deleted=0
ORDER BY date_certified DESC
) AS a GROUP BY a.equipment_id
) AS c ON c.equipment_id=e.equipment_id
WHERE e.deleted=0 AND c.date_nextdue <= CURRENT_DATE()
Однако в MySQL 5.7 тот же самый запрос SQL работает, но возвращает строки, включающие самую старую калибровку, а не самую последнюю.
Я экспериментировал с различными объединениями, но все нуждаются в возможности GROUP BY, и, похоже, именно здесь все идет не так, как надо. .
Хотя приведенный выше пример вымышлен, у меня есть много запросов, которые очень похожи по структуре и ведут себя одинаково. Мой вопрос состоит из двух частей:
Почему это ведет себя по-разному в MySQL 5.7 и
Какие изменения мне нужно внести? на SQL, чтобы заставить его функционировать как нужно в MySQL 5,7?
Спасибо за вашу помощь.