Я знаю, что это распространенный вопрос, потому что я задавал его раньше и просмотрел еще несколько, но все же, несмотря на то, что я основываю свой запрос на этом, я не могу заставить его работать. см.: соединение Mysql на основе max(timestamp) и mysql LEFT join для максимального значения правой таблицы
В основном у меня есть столы с разными предметами («стулья», «столы»), и каждый тип имеет запись со своим идентификатором для определенных стульев или столов. Затем у меня есть таблица местоположений, в которой хранятся все места, которые когда-либо были, включая текущее. Текущее местоположение отмечено меткой времени MAX.
Мой запрос предназначен для получения всех элементов и присоединения к текущему местоположению. Я следовал тому, что другие говорили, работает, но это не работает для меня. Любая помощь приветствуется.
РЕДАКТИРОВАТЬ: я не сказал, как это терпит неудачу: он получает записи и выполняет соединение, и он возвращает максимальную метку времени, но не информацию о записи, которая соответствует записи MAX (метка времени). Таким образом, он дает правильную отметку времени, но пол и т. Д. НЕ из записи с отметкой времени MAX.
Спасибо!
Запрос:
$q = "SELECT
'chairs' AS work_type,
chairs.id AS work_id,
chairs.title,
chairs.dimensions,
CurrentLocations.floor,
CurrentLocations.bin,
CurrentLocations.bay,
CurrentLocations.other
FROM chairs
LEFT JOIN (
SELECT
locations.id AS loc_id,
locations.work_type AS clwt,
locations.work_id AS clwi,
locations.floor,
locations.bin,
locations.bay,
locations.other,
MAX(locations.timestamp) AS latestLocation
FROM
locations
GROUP BY
locations.work_type, locations.work_id
) CurrentLocations
ON CurrentLocations.clwi = chairs.id AND CurrentLocations.clwt = 'chairs'
WHERE cur_loc LIKE '%19th Street%'
ORDER BY
FIELD(floor, 'Basement', '3rd Floor', '4th Floor', '5th Floor'),
bin,
bay,
other";