Salut tout le monde. Je crois que c'est une question «plus grand par groupe» mais même après avoir regardé plusieurs questions sur StackOverflow, je ne sais pas comment l'appliquer à ma situation ...Problème MySQL le plus important par groupe
J'utilise une base de données MySQL et un système de type blog de base mis en place sur les applications informatiques ... les tables ressembler à ceci:
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
J'utilise la requête de base suivante pour tirer tous les articles pour l'application avec le nom « Photoshop » lorsque le type de publication est un "article" et que le statut de l'article est "a" pour approbation:
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'
Ce qui me obtient ces résultats attendus:
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
Est-ce que quelqu'un en mesure de donner un coup de main sur la façon dont je pourrais modifier cette requête seulement tirer l'article le plus récent par plate-forme d'application? Ainsi, par exemple, je voudrais que mes résultats pour ressembler à ceci:
app_name app_platform post_created post_id
Photoshop Windows Dec. 1, 2009 3
Photoshop Macintosh Nov. 10th, 2009 2
sans indiquer l'un des articles 'Photoshop Windows'
parce que ce n'est pas la plus récente.
Si je colle simplement sur un MAX(post_created)
et un GROUP BY app_platform
mes résultats ne se regroupent pas toujours correctement. De la façon dont je le comprends, je dois effectuer une sorte de jointure interne d'une sous-requête?
Je suis confronté à un problème similaire, et une instruction "having" ne le résout pas. MySQL semble rapporter le premier résultat qu'il trouve pour chaque ligne groupée, et tout ce que "having" fera est d'exclure complètement toutes les lignes pour lesquelles le premier résultat ne correspond pas au résultat maximum. –