Рекламное объявление создается пользователем и сохраняется в этой таблице:
Код: Выделить всё
CREATE TABLE `classifieds` (
`ClassifiedAdID` mediumint NOT NULL,
`CustomerID` smallint NOT NULL,
`AdTitle` varchar(128) COLLATE utf8mb4_general_ci NOT NULL,
`AdText` varchar(8192) COLLATE utf8mb4_general_ci NOT NULL,
`AdImageList` varchar(4096) COLLATE utf8mb4_general_ci NOT NULL,
`Status` varchar(32) COLLATE utf8mb4_general_ci NOT NULL,
`DateSubmitted` datetime NOT NULL,
`ExpiryDate` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
Код: Выделить всё
CREATE TABLE `officeaction` (
`OfficeActionID` mediumint NOT NULL,
`FormContext` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`FormID` smallint NOT NULL,
`Result` varchar(64) COLLATE utf8mb4_general_ci NOT NULL,
`ActionByID` smallint NOT NULL,
`ActionBy` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`Remarks` varchar(8096) COLLATE utf8mb4_general_ci NOT NULL,
`ActionDate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
Код: Выделить всё
SELECT classifieds.*, officeaction.* FROM `classifieds` JOIN `officeaction` ON classifieds.ClassifiedAdID = officeaction.FormID WHERE officeaction.FormContext = 'Classifieds' ORDER BY classifieds.ClassifiedAdID, officeaction.ActionDate DESC;

Как видите, рубрикированное объявление № 11 было отклонено один раз и принято дважды, а «Принять» — самое последнее действие. Итак, я хочу получить эту запись (OfficeActionID № 11). Однако если я использую GROUP BY (как показано ниже), я получаю самую старую запись (OfficeActionID #9), а не самую последнюю. Поскольку я сортирую по дате (DESCending), я должен получить то, что хочу, но видимо (согласно той документации, которую мне удалось найти) невозможно предсказать, какая запись будет показана.
Как я могу это сделать? написать запрос, который даст мне то, что я хочу? Я просмотрел этот вопрос и ответы на него (я перевел ответы в MySQL), но у меня это не работает.
Подробнее здесь: https://stackoverflow.com/questions/793 ... e-in-mysql