J'ai deux tables: articles et articletagsrequête SQL pour obtenir le plus grand jour distincte - genre de
articles: id, author, date_time, article_text
articletags: id, tag
(article.id == articletags.id in a many-to-many relationship)
Je suis après la dernière fois que quelque chose a été publié sous chaque balise. Pour le dire autrement, pour chaque tag, parcourez tous les articles auxquels il est lié et trouvez le plus récent et retournez-le.
par exemple articles:
1, me, 12 Nov, Sometext
2, me, 13 Nov, Sometext
3, me, 14 Nov, Sometext
balises article
1, foo
1, bar
2, foo
3, bar
Je veux revenir:
foo, 13 Nov
bar, 14 Nov
je peux obtenir jusqu'à une jointure interne puis stumped . Je ne pense pas qu'une clause DISTINCT est ce que je suis après et je ne suis pas assez familier pour les sous-requêtes pour savoir si cela aiderait.
SELECT date_time, tag
FROM articles, articletags
WHERE articles.id = articletags.id
Est-ce encore possible?
Cela finit réellement retourner le plus ancien, pas la plus récente. C'est le comportement par défaut qui apparaît, donc il faut une clause max comme la solution de Gorden Bell. Deuxièmement, si vous utilisez MySQL, vous devez inverser Order By et Group by around pour que cela fonctionne. Je ne sais pas pourquoi mais tu fais. – Hyposaurus
@Hyposaurus: la norme SQL dit GROUP BY vient avant ORDER BY. –
@SoapBox: le problème avec ceci est qu'il retourne toutes les lignes, pas seulement la ligne de date maximum, pour chaque étiquette. –