2013-05-15 5 views
0

Мне нужно запросить две таблицы в моей базе данных MySQL. Вот краткий обзор: 2 таблицы: статьи и статьи. У меня есть примерно 2700 статей, и каждая статья может содержать от 20 до 50 журналов. Я хотел бы отобразить для каждой статьи дату последнего журнала. Проблема заключается в том, что запрос выполняется навсегда для выполнения.MySQL - INNER JOIN - взять только последний идентификатор из второй таблицы

Я пытаюсь что-нибудь подобное:

SELECT articles.id, article_logs.date FROM articles 
LEFT JOIN (SELECT MAX(id), hash_key, date FROM logs GROUP BY id) c 
ON article.hash_key = c.hash_key 

У вас есть представление о том, как сделать это надлежащим и эффективным способом.

спасибо, что заранее.

+0

совет: 'date' является MySQL резерва ключевого слова так обернуть его' \ '' ' – diEcho

+1

Использования макс (ID)' и 'группы по id' вместе не имеет смысла. И любая другая СУБД просто отвергает это неправильное использование «group by». –

+0

@ diEcho, дата была только в качестве примера, в моей таблице имя поля - log_date ... Спасибо за это. –

ответ

1

Может быть, вы можете попробовать что-то вроде этого:

SELECT a.id, 
     (SELECT MAX(l.date) 
     FROM logs l 
     WHERE l.hash_key = a.hash_key) date 
FROM articles a 
+0

Отлично, вот и все, tahnk you sooo sooo much .. –

+0

Milos мой запрос работает, только если вам нужна максимальная дата для 'hash_key'. Но если вам нужна дата для MAX 'id' (как в вашем запросе), запрос должен быть изменен. Теперь я предполагаю, что max 'date' всегда имеет max' id'. Если что-то не сработает, напишите комментарий, и я отредактирую ответ. – Justin

+0

да, мне нужна максимальная дата для конкретной hash_key, потому что каждая статья идентифицируется уникальной hash_key. –

Смежные вопросы