在修订系统中为所有语言提取最新版本的内容

时间:2011-06-28 10:41:09

标签: php mysql version-control localization internationalization

我有一个MySQL数据库,它有三个数据库表:news_articleslanguagesnews_articles_languages

  • languages表包含系统支持的每种语言的记录
  • news_articles表包含新闻文章的一般信息,例如ID和附加图像
  • news_articles_languages表包含有关新闻文章的本地化信息,还存储修订版。

news_articles_languages表的结构如下:

id            INT       AUTO_INCREMENT
article_id    INT
language_id   INT
title         VARCHAR
friendly_name VARCHAR
content       TEXT
created       TIMESTAMP

保存新闻文章后,翻译会以新的created列插入此表中,以便我可以轻松查询以前的修订。

但是,我希望能够根据文章ID提取所有最新修订版。对此的查询是什么?我尝试了GROUP BYDISTINCT的各种组合,但这些只能用一种语言给出一个结果;对于给定的文章,我需要所有语言。

1 个答案:

答案 0 :(得分:0)

如果id最高的修订版始终是最新的,那么我认为以下内容应该可行。如果你不能依赖它并需要使用'created',那么我不确定!

SELECT * FROM `news_articles_languages` WHERE id IN(SELECT MAX(id) FROM `news_articles_languages` WHERE article_id = 1 GROUP BY language_id)