Эй, все. Я считаю, что это вопрос «большой-на-группу», но даже после рассмотрения нескольких вопросов о StackOverflow я не уверен, как применить это к моей ситуации ...Ошибка MySQL наибольшая-на-группу
Я использую базу данных MySQL и есть система основного блог типа создать о компьютерных приложениях ... Таблица выглядеть следующим образом:
POSTS
post_id
post_created
post_type -- could be article, review, feature, whatever
post_status -- 'a' approved or 'd' for draft
APPS
app_id
app_name
app_platform -- Windows, linux, unix, etc..
APP_TO_POST -- links my posts to its relevant application
atp_id
atp_app_id
atp_post_id
Я использую следующий основной запрос, чтобы вывести все статьи для приложения с названием «Photoshop» где тип сообщения является «статьей», а статус статьи «a» для одобренных:
SELECT apps.app_name, apps.app_platform, posts.post_created, posts.post_id
FROM apps
JOIN app_to_post ON app_to_post.atp_app_id = apps.app_id
JOIN posts ON app_to_post.atp_post_id = posts.post_id
WHERE apps.app_name = 'Photoshop'
AND
posts.post_type = 'Article'
AND
posts.post_status = 'a'
Что заставляет меня эти ожидаемые результаты:
app_name app_platform post_created post_id
Photoshop Windows Oct. 20th, 2009 1
Photoshop Windows Dec. 1, 2009 3
Photoshop Macintosh Nov. 10th, 2009 2
ли кто-нибудь быть в состоянии протянуть руку, как я мог бы изменить этот запрос к только тянуть самую последнюю статью за прикладную платформу? Так, например, я бы хотел, чтобы мои результаты выглядеть следующим образом:
app_name app_platform post_created post_id
Photoshop Windows Dec. 1, 2009 3
Photoshop Macintosh Nov. 10th, 2009 2
И опустить одну из 'Photoshop Windows'
статей, потому что это не самая последняя.
Если я просто наклеил на MAX(post_created)
и GROUP BY app_platform
мои результаты не всегда группируются правильно. Насколько я понимаю, мне нужно выполнить какое-то внутреннее соединение суб-запроса?
Я работаю с аналогичной проблемой, и оператор «having» не решает проблему. Кажется, что MySQL сообщает первый результат, который он находит для каждой сгруппированной строки, и все «имеющие» будут полностью исключать любые строки, для которых первый результат не соответствует максимальному результату. –