Я знаю, что есть ряд вопросов «Как найти самую последнюю запись», но ни один из них не решил мою конкретную проблему: в MySQL я пытаюсь найти самую последнюю запись для записи это сопоставлено с двумя различными категориями в одной таблице. По сути, есть таблица ENTRIES с кучей информации, таблица CATEGORIES (id, name) и таблица ENTRY_CATEGORIES (entry_id, category_id). Мне нужно найти самую последнюю запись, которая сопоставлена с двумя различными категориями. Мне удалось это сделать, но только по сути, присоединив производную таблицу к себе, и мне кажется, что есть более чистый способ сделать это. Как мне лучше выразить следующий беспорядок:
SELECT doc.entry_id
FROM exp_category_posts doc
INNER JOIN exp_category_posts fund ON doc.entry_id = fund.entry_id
INNER JOIN exp_weblog_titles t ON doc.entry_id = t.entry_id
WHERE doc.cat_id = 408
AND fund.cat_id = 548
AND t.entry_date = (SELECT MAX(t.entry_date)
FROM exp_category_posts doc
INNER JOIN exp_category_posts fund ON doc.entry_id = fund.entry_id
INNER JOIN exp_weblog_titles t ON doc.entry_id = t.entry_id
WHERE doc.cat_id = 408
AND fund.cat_id = 548)
Это жестко запрограммированный пример, где 408 и 548 также обычно являются полями. Это база данных Expression Engine, если вам интересно.